Pred nedávnom som migroval linuxové kontajnery LXC a virtuálne stroje KVM zo starého železa (Proxmox 5) na nové železo Proxmox 6. Vzhľadom k tomu, že som prešiel z rotačného disku 3 TB na SSD disk 1 TB, tak data som potreboval fyzicky presunúť na novy SSD. Najprv som uvažoval, že dáta surovo prekopírujem z disku na disk pomocou scp, ale tým by som porušil metadáta, tak som sa rozhodol, že lepšie bude použiť rsync
rsyc je nástroj na vzdialenú, ale aj lokálnu synchronizáciu súborov. Synchronizácia súborov je inkrementálna, to znamená, že sa kopírujú len prírastky. Pri použití rsync je napr. zachovaný čas vytvorenia súboru. Ak by sme použili cp, tak by sa súbor naklonoval s novými metadátami. Nie som si na 100% istý, ale myslím si, že klasické kopírovanie neoveruje, či sa súbor nakopíroval v poriadku, alebo nie. Často krát sa mi stalo (ešte keď som používal MS Windows), že keď som kopíroval nejaký obrázok na iný disk a chcel som ho o pol roka otvoriť, tak sa mi to nepodarilo, lebo súbor bol poškodený a zdrojový súbor už neexistoval. Rsync využíva aj checksum, čiže je zachovaná aj integrita zdrojového a cieľového súboru.
Takže ja som si pripojil starý rotačný 3.5″ HDD do PC kde mám linux a kopíroval (syncoval) som lokálne dáta na vzdialený server. Príkaz môže vyzerať nejak takto:
sudo rsync -avzcp -e "ssh" /media/jany/8b9bc664-fe81-4756-ba50-cd9753d58d28/nextcloud root@192.168.1.101:/mnt/sdb/nextcloud
- -a archív zahŕňa aj rekurziu -r (a tiež lptgoD)
- -v ukecaný výstup
- -z pred odosielaním sa komprimuje
- -c kontrolný súčet
- -p zachová práva súboru chmod (je aj obsahom -a)
Záver
Server a PC boli pripojene cez gigabit switch, takže to fungovalo celkom rýchlo. Na server som teda dostal pôvodné súbory s dátumom a časom vytvorenia. Príkaz rsync pozná viac možností ako napr. vyňať zo syncu nejaké adresáre/súbory pomocou –exclude. Ak na zdrojovej strane odstránime nejaký súbor, tak na cieľovej strane sa nebude mazať. Ak však použijeme možnosť –delete, tak sa súbor odstráni aj v cieľovej zložke. Odporúčam pozrieť man rsync alebo rsync –help.