Restic client auf 64 Bit Linux installieren

Mittwoch, 28. April, 2021

Restic [1] ist ein in Go geschriebenes Backup-Tool für die Kommandozeile … oder zum Skripten. Es besteht aus einem einzigen Binary und hat keinerlei Abhängigkeiten zu Libs, Paketen oder irgendwas. Es erzeugt dedulizierte Backups: initial wird ein Vollbackup gemacht und dann nie wieder - es braucht dann nur noch inkrementelle Backups. Restic gibt es für Windows/ Mac/ Linux und diverse Plattformen (BSD, Solaris, Mips, … - siehe Releases (dort etwas scrollen :-) [2]).

Das hat was.

Daheim werfe ich gerade einen Http-Server als Backup-Endpoint auf die Synology [3].

Auf Systeme am Institut habe ich grob 150 Linux-Systeme - mit altem und neuen Linux Varianten verschiedener Distributionen. Ich habe ein Bash Skript geschrieben, das mit wget das Binary des Restic Client holt, entpackt und ins /usr/bin legt. Wer es für ein anderes OS oder Architektur braucht, müsste den Suffix “_linux_amd64” ersetzen … oder aber auch dynamisch machen (mit

uname -a

könnte man hinkommen).

#!/usr/bin/env bash

# ------------------------------------------------------
# CONFIG
# ------------------------------------------------------
resticversion=0.12.0
doLink=0

installdir=/usr/bin
resticfile=restic_${resticversion}_linux_amd64
downloadfile=${resticfile}.bz2
downloadurl=https://github.com/restic/restic/releases/download/v${resticversion}/${downloadfile}

# ------------------------------------------------------
# MAIN
# ------------------------------------------------------
echo
echo "##### INSTALL RESTIC CLIENT into $installdir #####"
echo

echo ----- DOWNLOAD
if [ ! -f "${downloadfile}" ]; then
         wget -O "${downloadfile}.running" -S "${downloadurl}" 
                 && mv "${downloadfile}.running" "${downloadfile}"

else
         echo SKIP download
fi
echo

echo ----- UNCOMPRESS
bzip2 -d "${downloadfile}"
echo

echo ----- INSTALL
mv "${resticfile}" "${installdir}"
chmod 755 "${installdir}/${resticfile}"
rm -f "${installdir}/restic" 2>/dev/null
test $doLink -eq 0 || ln -s "${installdir}/${resticfile}" "${installdir}/restic"
test $doLink -eq 0 && mv "${installdir}/${resticfile}" "${installdir}/restic"

echo
echo ----- SELF-UPDATE
restic self-update
echo
echo ----- RESULT:
test $doLink -eq 0 || ls -l "${installdir}/${resticfile}" 
ls -l "${installdir}/restic"
echo
echo ----- CURRENT VERSION:
restic version
echo
echo ----- DONE

weiterführende Links:

  1. https://restic.net/ Homepage von Restic
  2. Github: Restic Releases
  3. Github: Skript zur Installation eines Restic Http Servers auf einer Synology

Chocolatey - veraltete Programm-Einträge löschen

Montag, 23. Mai, 2016

Problem:

Ich habe mit Chocolatey Programme deinstalliert, z.B.

C:\Users\Axel>choco uninstall Quicktime

Aber dennoch verbleiben einige in der Liste der lokalen Anwendungen:


C:\Users\Axel>choco list -lo

7zip.commandline 16.01
7zip.install 16.01
AdobeAIR 20.0.0.233
autohotkey.portable 1.1.23.07
avirafreeantivirus 14.0.6.552
chocolatey 0.9.9.12
ChocolateyGUI 0.13.2
ConEmu 16.5.15.0
Far 3.0.4242
ffmpeg 3.0.1
flashplayeractivex 21.0.0.242
flashplayerplugin 14.0.0.179
javaruntime 8.0.73
jre8 8.0.91
netbeans-php 8.0
PDFXChangeViewer 2.5.317
Pencil 2.0.3
PowerShell 5.0.10586.20151218
Quicktime 7.7.5   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
SwissFileKnife 1.6.9
sysinternals 2016.04.28
virtualbox 5.0.20.106931
VirtualBox.ExtensionPack 5.0.20.106931
23 packages installed.

Lösung

Man gehe in das Lib Verzeichnis von Chocolatey

C:\Users\Axel>cd "C:\ProgramData\chocolatey\lib"

C:\Program\Data\chocolatey\lib>dir
 Datenträger in Laufwerk C: ist A
 Volumeseriennummer: 4C76-01F1

 Verzeichnis von C:\ProgramData\chocolatey\lib

23.05.2016  21:11    <DIR>          .
23.05.2016  21:11    <DIR>          ..
21.05.2016  13:14    <DIR>          7zip.commandline
21.05.2016  14:30    <DIR>          7zip.install
31.03.2016  23:40    <DIR>          AdobeAIR
21.05.2016  13:15    <DIR>          autohotkey.portable
13.08.2014  20:33    <DIR>          avirafreeantivirus.14.0.6.552
31.03.2016  23:48    <DIR>          chocolatey
17.11.2014  00:21    <DIR>          chocolatey.0.9.8.28
23.05.2016  21:08    <DIR>          ChocolateyGUI
21.05.2016  13:15    <DIR>          ConEmu
16.05.2015  10:32    <DIR>          Far
21.05.2016  13:16    <DIR>          ffmpeg
21.05.2016  13:17    <DIR>          flashplayeractivex
23.05.2016  21:11    <DIR>          flashplayerplugin
21.05.2016  13:20    <DIR>          javaruntime
21.05.2016  14:38    <DIR>          jre8
13.08.2014  21:08    <DIR>          netbeans-php.8.0
21.05.2016  13:20    <DIR>          PDFXChangeViewer
21.05.2016  14:34    <DIR>          Pencil
23.05.2016  21:08    <DIR>          PowerShell
21.05.2016  15:14    <DIR>          Quicktime   <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
16.05.2015  11:06    <DIR>          SwissFileKnife
21.05.2016  13:21    <DIR>          sysinternals
21.05.2016  14:27    <DIR>          virtualbox
21.05.2016  14:29    <DIR>          VirtualBox.ExtensionPack
               0 Datei(en),              0 Bytes
              26 Verzeichnis(se), 337'768'534'016 Bytes frei

Hier habe ich das gleichnamige Verzeichnis gelöscht

C:\ProgramData\chocolatey\lib>del /S Quicktime

Möchten Sie "C:\ProgramData\chocolatey\lib\Quicktime*" löschen (J/N)? J
Datei wurde gelöscht - C:\ProgramData\chocolatey\lib\Quicktime\Quicktime.7.7.5.nupkg

Anm:
ohne Garantie … ggf. in ein anderes Verzeichnis Verschieben, statt zu löschen.

… aber dann ist Quicktime bei mir auch weg gewesen:

C:\ProgramData\chocolatey\lib>choco list -lo

7zip.commandline 16.01
7zip.install 16.01
AdobeAIR 20.0.0.233
autohotkey.portable 1.1.23.07
avirafreeantivirus 14.0.6.552
chocolatey 0.9.9.12
ChocolateyGUI 0.13.2
ConEmu 16.5.15.0
Far 3.0.4242
ffmpeg 3.0.1
flashplayeractivex 21.0.0.242
flashplayerplugin 14.0.0.179
javaruntime 8.0.73
jre8 8.0.91
netbeans-php 8.0
PDFXChangeViewer 2.5.317
Pencil 2.0.3
PowerShell 5.0.10586.20151218
SwissFileKnife 1.6.9
sysinternals 2016.04.28
virtualbox 5.0.20.106931
VirtualBox.ExtensionPack 5.0.20.106931
22 packages installed.

weiterführende Links:

  1. https://chocolatey.org/

Sicherheitswarnung bei Programmverknüpfungen nach Win10 Update

Samstag, 6. Februar, 2016

Irgendwie nervt es. Es gibt diese Symbolleiste “Links” wo man Favouriten als Programmverknüpfungen ablegen kann.
2016-02-06-linkleiste-00.png

Mit IE-Update, mit Windows 10 Upgrade und jetzt wieder mit einem Windows10 Update kommen die Sicherheitsdialoge immer wieder aufs Neue und fragen höflich “Datei öffnen - Sicherheitswarnung … Möchten Sie diese Datei öffnen? …”

Das, was ich zu einer früheren Windows einmal erfolgreich praktizierte (icacls-Aufruf), funktioniert seit Windows 10 scheinbar nicht mehr. Dass der Order mal Links oder aber Favouriten heisst, ist an der Stelle nicht einmal das Problem. Die Methode geht einfach nicht mehr.

Schnelle Lösungen, die ich gefunden habe …

Für eine einzelne Verknüpfung die nachfolgende Variante:

(1)
Icon aus der Links Leiste einfach mit gedrückter linker Maustaste auf den Desktop ziehen und dort fallenlassen.
2016-02-06-linkleiste-01.png

(2)
Das Icon wird verschoben.
2016-02-06-linkleiste-02.png

(3)
Das Icon auf dem Desktop dann zurück in die Links-Leiste mit gedrückter linker Maustaste plus Shift-Taste ziehen.
2016-02-06-linkleiste-03.png

Icon nun aus der Link-Symbolleiste anklicken, um das Programm zu starten - der Sicherheitsdialog ist weg. Freu :-)

Um es für alle Verknüpfungen gleichzeitig zu machen, hab ich eine andere Lösung.

Man findet jenen Ordner für die Links im Explorer (Windows-Taste + E), wenn man %USERPROFILE%\Favorites\Links in die Adresszeile eingibt:
2016-02-06-linkleiste-04.png

Wenn man

  • einen neuen Ordner irgendwo anlegt
  • die Dateien aus \Favorites\Links in den Zwischen-Ordner verschiebt
  • dann zurück-kopiert

… ist der Sicherheitsdialog ebenfalls weg.
Ach ja, den Zwischenordner kann man dann löschen.

Ja und sowas wiederum kann man automatisieren und eine Bat-Datei schreiben - quick and dirty einmal so:

set linkdir=%USERPROFILE%\Favorites%\Links
set tmpdir=%TEMP%\Links

mkdir "%tmpdir%" 
move "%linkdir%*.*" "%tmpdir%"
dir "%linkdir%" "%tmpdir%"
pause
copy "%tmpdir%*.*" "%linkdir%"
dir "%linkdir%" "%tmpdir%"
pause
rmdir /s /q "%tmpdir%"

Update vom 12.08.2017
Und mal wieder funktionierte der Trick nicht mehr … aber ich habe etwas gefunden (s.a. Screenshots unten):

  1. Im Explorer zu C:\Users\[Benutzername]\ navigieren und auf “Favoriten” die rechte Maustaste und Eigenschaften wählen.
  2. Im Tab Sicherheit waren “komische” unbekannte User (mit einer SID Nummer). Mit [erweitert] den Editor für die Berechtigungen wählen.
  3. Hier die falschen Benutzer entfernen. Und [Übernehmen] … und [OK]. Durch die aktive Vererbung werden sie in den Unterelementen, zu denen auch der Links-Ordner gehört, ebenfalls entfernt
  4. Das Skript starten, das Links temporär wegschiebt und dann zurückkopiert (entspricht der Beschreibung oben)
  5. Falls die Icons nach dem Zurückkopieren nicht da sind: Die Symbolleiste “Links” ausblenden (rechte Maustaste in der Taskbar -> Symbolleisten -> Links anklicken) … und dann wieder einblenden.

2017-08-12-favoriten-mit-unbekanntem-user-01.png 2017-08-12-favoriten-mit-unbekanntem-user-02.png

Viel Glück!

weiterführende Links:

  1. alter Blog-Eintrag Sicherheitswarnung bei Programmverknüpfungen nach Installation des IE 10
  2. Kommando copy
  3. Kommando dir
  4. Kommando mkdir
  5. Kommando move
  6. Kommando pause
  7. Kommando set

Cygwin - Installation per Kommandozeile: apt-cyg

Sonntag, 22. Februar, 2015

Mit Cygwin holt man sich Linux Tools auf MS Windows. Nicht nur die Linux-Befehle, auch Dienste lassen sich installieren, wie z.B. OpenSSH.

Allgemein erfolgt die Installation mit der setup.exe und einer Paketauswahl per Mausklick (ja, es gibt natürlich auch einen Filter, wo man seinen Suchtext eingeben kann). Aber dennoch fehlt ein Kommandozeilen-Tool zum Suchen und installieren neuer Pakete, wie bei den Distributionen.

Just getestet und für gut befunden habe ich apt-cyg.

In der Bash ist es mit 2 Kommandos schnell installiert:

$ lynx -source rawgit.com/transcode-open/apt-cyg/master/apt-cyg > apt-cyg
$ install apt-cyg /bin

Und dann hat man, wie in Ubuntu, ein apt ähnliches Programm.

$ apt-cyg
usage: apt-cyg [command] [options] [packages]

Commands:
   install     Install packages
   remove      Remove packages
   update      Update setup.ini
   download    Download only - do NOT install or unpack archives
   show        Displays the package records for the named packages
   depends     Performs recursive dependency listings
   rdepends    Display packages which require X to be installed,
               AKA show reverse dependencies
   list        List packages matching given pattern. If no pattern is given,
               list all installed packages.
   category    List packages matching given category
   listfiles   List files owned by packages
   search      Search for a filename from installed packages
   searchall   Search for a filename from all available packages

Options:
   -c, --cache <dir>      set cache
   -f, --file <file>      read package names from file
   -m, --mirror <url>     set mirror
   --help
   --version

Nun sind Pakete schneller installierbar … man sucht in der Liste der vorhandenen Pakete

$ apt-cyg searchall [Begriff]

… und installiert es

$ apt-cyg install ncftp

Fertig :-)

apt-cyg selbst ist ein Bash-Skript. Es läuft somit auf der 32-bit und 64-Bit Version von Cygwin gleichermassen.

Weiterführende Links

  1. Cygwin
  2. apt-cyg auf Github
  3. pcwdld.com: Einführung im Cygwin (en)

NTFS: in den ACLs rekursiv einen Benutzer hinzufügen

Donnerstag, 22. Januar, 2015

Auf unserem Firmen-Fileserver sollte ein Benutzer zusätzlich berechtigt werden, das NTFS zu lesen.

Das Problem: Wenn man bei einem Startverzeichnis die Rechte gibt, wird dieses dann soweit nach unten vererbt, bis es auf irgendenem Verzeichnis andere Rechte gibt. So ist im Basisverzeichnis der Zugang für alle Mitarbeiter, einige Ebenen tiefer sind Projektordner, Protokolle, … verschiedenste Ordner halt. Bei jedem einzelnen Projektordner stoppt also der Vererbungsmechanismus und man muss bei jedem dieser Projektordner den Benutzer erneut hinzufügen.

Das wollte ich nicht von Hand und hunderten von Klicks erledigen.

Die nachfolgende Batchdatei sucht ab einem Startverzeichnis rekursiv alle Verzeichnisse (dir /s /b [Verzeichnis]).

Auf jedem Verzeichnis wird iacls aufgerufen (das zeigt die Berechtigungen an) und in der Ausgabe wird geschaut, ob der User bereits drin ist.

Ist der User nicht drin, gibt es einen Aufruf für die subroutine addUser. Dort wird der Benutzer (rekursiv) hinzugefügt und auf ein Return gewartet (aber das nur zur Kontrolle).

@echo off
rem ======================================================================
::
::    Skript zum Hinzufuegen eines einzelnen Users in die bestehenden
::    ACLs
::
::  ----------------------------------------------------------------------
::  2015-01-22  Axel Hahn
rem ======================================================================
set line=-------------------------------------------------------------------------------
 
set mydir=nas-blabla\irgend\wo
set cuser=DOMAIN\newuser
 
echo.
echo %line%
echo user %cuser% hinzufuegen in %mydir%
echo %line%
 
for /F "tokens=*" %%a in ('dir /b /s /a:d %mydir%') do (
      echo ... %%a
      icacls "%%a" | findstr "%cuser%" >nul || call :addUser "%%a"
)
echo.
echo fertig.
timeout /t 100
exit
 
:addUser
echo ...... adding %cuser%
icacls %1 /grant "%cuser%":(OI)(CI)(RX)
set /p dummy=Return

Weiterführende Links