Rsync: verschil tussen versies
Regel 27: | Regel 27: | ||
Ik geloof dat rsync standaard de ''verzonden'' file kiest als autoriteit, als er verschillen zijn in grootte en datum-van-laatste-verandering. Met de flag <code>--checksum</code> kun je niet nauwkeuriger doen [https://en.wikipedia.org/wiki/Rsync] | Ik geloof dat rsync standaard de ''verzonden'' file kiest als autoriteit, als er verschillen zijn in grootte en datum-van-laatste-verandering. Met de flag <code>--checksum</code> kun je niet nauwkeuriger doen [https://en.wikipedia.org/wiki/Rsync] | ||
− | == Mappen & | + | == Mappen, bestanden & argumenten - Hoe zit het precies? == |
Ik vind het vaak lastig om de argumenten goed te krijgen, als het gaat om het kopiëren van mappen met inhoud. Komt-ie: | Ik vind het vaak lastig om de argumenten goed te krijgen, als het gaat om het kopiëren van mappen met inhoud. Komt-ie: |
Versie van 16 jul 2020 07:03
rsync gaat door waar cp en scp ophouden. Op de man page wordt het omschreven als a fast, versatile, remote (and local) file-copying tool. Het is oa. geschikt voor efficiënte datatransfer over een SSH-verbinding. Maar ook binnen één en dezelfde computer kan het soms wonderen doen. Daarnaast lijkt het een volwaardig backupt-tool te zijn. Overigens: rsync is niet immuum voor het argument too long-probleem dat hier geschetst wordt, maar het heeft er wel oplossingen voor.
Kopiëren, niet verplaatsen
rsync is bedoeld om te kopiëren. Je kunt er ook mee verplaatsen (met de switch --remove-source-files
), maar dat gaat vermoedelijk niet sneller dan met mv
. Behalve dat mv niet over netwerkprotocolen kan werken.
Upload over SSH
rsync werkt prima over SSH, net als scp. Vermoedelijk is rsync betrouwbaarder en efficiënter [1] dus ik gebruik dat liever. Voorbeeld:
rsync -av * dvb87:/var/www/example.com/
Rename
rsync kan gewoon hernoemen zoals cp dat ook kan. Bv.:
rsync ./test-01.txt ./test-02.txt
Synchronisatie ipv. kopiëren
Stel je wilt 15.000 bestanden kopiëren van map A naar map B, maar een deel is al gedaan. Met cp is dit alles of niets. Met rsync wordt de map gesynchroniseerd: Er wordt alleen gekopiëerd wat nodig is. Uiteraard kost synchroniseren ook tijd (ihb.: verifiëren dat de bestanden gelijk zijn), maar vermoedelijk is het efficiënter dan cp.
Synchronisation & arbitrage
Ik geloof dat rsync standaard de verzonden file kiest als autoriteit, als er verschillen zijn in grootte en datum-van-laatste-verandering. Met de flag --checksum
kun je niet nauwkeuriger doen [2]
Mappen, bestanden & argumenten - Hoe zit het precies?
Ik vind het vaak lastig om de argumenten goed te krijgen, als het gaat om het kopiëren van mappen met inhoud. Komt-ie:
- in-map bevat één (leeg) bestand
- uit-map bevat niets.
Kopiëer een map (met inhoud) naar een andere map
#!/bin/bash # inmap="/tmp/in-map" uitmap="/tmp/uit-map" bron=$inmap doel=$uitmap echo "Bron: "$bron echo "Doel: "$doel rsync -vva $bron $doel
Nu krijg je in de map uit-map een map in-map met daarin het bestand - Meestal niet wat ik zoek.
Kopiëer de inhoud van een map naar een andere map
Dit is wat ik hierboven eigenlijk zocht:
#!/bin/bash # inmap="/tmp/in-map" uitmap="/tmp/uit-map" bron=$inmap"/*" doel=$uitmap echo "Bron: "$bron echo "Doel: "$doel rsync -vva $bron $doel
- Ik vond het hier handig om met aparte variabelen
bron
endoel
te werken: Dat helpt met debuggen. Als ik suffixen toepas als argumenten voor rsync, mis ik dat - Merk op, dat er geen
/
nodig is aan het eind van bron en doel. Vermoedelijk heb je dat nooit nodig.
Kopiëer meerdere mappen (met wildcard) naar een andere map
Zo dus:
#!/bin/bash # # Hoe kopiëer ik alle mapen die beginnen met "in" naar de doellocatie? inmap="/tmp/in*" uitmap="/tmp/uit-map" bron=$inmap doel=$uitmap echo "Bron: "$bron echo "Doel: "$doel rsync -vva $bron $doel
Zie ook
Bronnen
- https://rsync.samba.org/
- https://www.ubuntupit.com/free-open-source-backup-software-for-linux/
- https://www.howtogeek.com/135533/how-to-use-rsync-to-backup-your-data-on-linux/
- https://www.marksanborn.net/howto/use-rsync-for-daily-weekly-and-full-monthly-backups/ - Ik weet nog niet goed hoe dit werkt, maar 't ziet er veelbelovend uit
- https://linuxize.com/post/how-to-exclude-files-and-directories-with-rsync/