Použil jsem rsync ke zkopírování konkrétního uživatelského adresáře z jednoho úložného zařízení do druhého. Operace byla úspěšně dokončena bez vyvolání jakéhokoli varování/chyby. Ale k mému překvapení byla data ke kopírování přibližně 167 GB a zkopírovaná data měla pouze 1,4 GB! Použil jsem příkaz „du“ k výpočtu velikosti disku zdrojových a cílových složek a podle tohoto návodu – jak opravit nepravidelné statistiky využití disku z du, jsem se ujistil, že „du“ nevykazuje nevypočitatelné výsledky. Níže je snímek vysvětlující scénář.
Scénář: Předpokládejme – starý bod připojení úložiště je „/sata1/home/ramya“ a nový bod připojení úložiště je „/tmp/home/ramya“. Jak již bylo řečeno, použil jsem rsync zkopírujte adresář, jak je znázorněno níže:
usr/bin/rsync -avzlh /sata1/home/ramya/* /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log
Hledejte „hvězdičku“ ve výše uvedeném příkazu (to byl problém a důvod vysvětlím pod okrajem)
zjištění nesrovnalostí příkazů:
du výstup příkazu zdrojového adresáře (/sata1/home/ramya/):
# du -chs /sata1/home/ramya/167G /sata1/home/ramya/167G celkem
du výstup příkazu cílového adresáře (/tmp/home/ramya):
# du -chs /tmp/home/ramya/1,4G /tmp/home/ramya/1,4G celkem
Z výše uvedených snímků můžete vidět, že zdrojový adresář má velikost 167 GB a zkopírovaný adresář má velikost 1,4 GB. Kde jsou tedy zbývající data? Dovolte mi vysvětlit, jak jsem problém vyřešil.
Řešení:
K odladění problému jsem použil du příkaz ke kontrole velikosti každého souboru ve zdrojové a cílové složce, jak je uvedeno níže:Vypsáním seznamu souborů a porovnáním velikosti souboru.
bash-3.2#du -h -x /sata1/home/ramya 15G /sata1/home/ramya/.g448M /sata1/home/ramya/1SVC13G /sata1 /home/ramya/.g8120M /sata1/home/ramya/techg/.techla90G /sata1/home/ramya/.openVAS.tar-gz16G /sata1/home/ramya/.VSL.zip...... | bash-3.2#du -h -x /tmp/home/ramya 1G /tmp/home/ramya/samplejobtoec48M /tmp/home/ramya/1SVC41M /tmp/home/ramya/M1512K /tmp/home /ramya/techglimpse/openvas.txt134M /tmp/home/ramya/etc/pki264K /tmp/home/ramya/NAMD_CV...... |
Z výše uvedeného výstupu jsem pochopil, že skryté soubory nebyly zkopírovány a bylo to způsobeno „*" (asterisk)
používané v rsync příkaz. Hvězdička rozbalí všechny soubory v aktuální práci adresář kromě souborů, jejichž název začíná tečkou (skryté soubory). Tedy rsync
nikdy nepřijímá skryté soubory jako argumenty. Řešením je tedy použít celý název adresáře (místo hvězdičky) jako argument pro rsync příkaz.
rsync -avzlh --ignore-existing /sata1/home/ramya/ /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log
Poznámka:Koncová lomítka na konci obou cest. Jakákoli jiná syntaxe může vést k neočekávaným výsledkům!
Voila! Fungovalo to.