Zoals eerder beschreven, ik ben bezig een oude server te migreren naar de laatste LTS van Ubuntu. Hier beschrijf/documenteer ik e.e.a.
Ik gebruikte altijd stackcmd van Trans-ip om 3x per dank mijn belangrijke lokale bestanden en backups te syncen naar mijn Nederlandse cloud provider. (Ik probeer toch een beetje uit handen van de grote amerikaanse tech bedrijven te blijven…). Doel is om in geval van een crash in ieder geval een kopie buitenshuis te hebben, en soms ook handig om snel foto’s/filmpjes of zo te delen.
Dus dat wilde ik ook voor de nieuw server doen, maar… Ik vond wel info om de stack-client voor linux te installeren, maar daar zat stackcmd niet in. En de oude versie (ubuntu 20.04) werkte ook niet op 24.04. Dus aan support even de vraag gesteld, of deze nog wel bestond. En ja, gelukkig wel! Installatie als volgt:
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/transip-stack.gpg] https://filehosting-client.transip.nl/packages/stack-ubuntu-24.04/ main client' | sudo tee /etc/apt/sources.list.d/stack-client.list
sudo wget -O /usr/share/keyrings/transip-stack.gpg https://filehosting-client.transip.nl/transip-stack.gpg
sudo apt-get update
sudo apt install stack-client-cmd
Jay, hij is er weer! Om het goed aan het werk te krijgen moeten wel een paar zaken geregeld worden:
- In de <source-path> wordt in de root een database bestand geschreven: .sync_journal.db
Zorg ervoor dat je gebruiker waarmee gaat syncen owner is van dit bestand. - Zorg ervoor dat de backup-user minimaal lees rechten heeft op de te syncen bestanden.
Ik heb ooit een script stacksync.sh gemaakt die ik in de cron job aftrapte, maar die bleek niet meer te werken, omdat het sync commando iets veranderd is. Het is nu:
stackcmd <source-path> https://<stackuser>:<stackpass>@<stackdns-name> <stackpath>
Goede reden om het script even goed tegen het licht te houden:
1. Het script leest een stacksync.csv bestand uit waarin per regel het bronpath en de dest-map staat; als volgt:
/media/disk/users/Gerrit/,Gerrit
/media/disk/users/naam/,Naam
/media/disk/media/Videos/,Videos
2. stackcmd is een handige tool, maar geeft eeerrrrrrggg veel logging. Ik heb het script daarom aangepast, zodat de raw-logging gefilterd wordt, en alleen fouten en bestands actie’s getoond worden. Logging gaat naar een submap van het script: ./log. Er komen 2 logbestanden in -dit voor latere finetuning van script- een shadow-log en een echte log. De shadow log bevat de volledige stackcmd logregel waar een subset (lang leve chatGPT) uitgehaald is voor de echte log.
3. stackcmd synct geen verborgen bestanden, symbolic links, én bestanden die in gebruik zijn (.~bestanden). Het script telt hoe vaak dit gebeurt.
4. Je kunt ook stacksync.sh <destfolder> opgeven; dan wordt alleen deze folder gesynct, én de volledige logfile wordt ook in de log directory weggeschreven. Handig voor extra troubleshooting/check.
5. Je dient in het script in ieder geval een aantal variabelen te zetten:
stackuser=<loginname>
stackpass=<loginpass>
stackdns=<dnsname>.stackstorage.com #Bij mij is de dnsname gelijk aan de stackusername.
Dus dat. Mogelijk vindt je het ook handig, daarom heb ik het script als txt bestand bijgevoegd.