Ho usato rsync comando per copiare una particolare directory utente da un dispositivo di archiviazione a un altro. L'operazione è stata completata correttamente senza generare alcun avviso/errore. Ma con mia sorpresa, i dati da copiare erano di circa 167 GB e i dati copiati erano di soli 1,4 GB! Ho usato il comando "du" per calcolare la dimensione del disco delle cartelle di origine e destinazione e mi sono assicurato che "du" non mostrasse risultati irregolari seguendo questo tutorial:come correggere le statistiche di utilizzo del disco irregolari da du. Di seguito è riportato un'istantanea che spiega lo scenario.
Scenario: Supponiamo che il vecchio punto di montaggio dello storage sia '/sata1/home/ramya' e il nuovo punto di mount dello storage sia '/tmp/home/ramya'. Come detto in precedenza, ho usato rsync per copiare la directory come mostrato di seguito:
usr/bin/rsync -avzlh /sata1/home/ramya/* /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log
Cerca l'asterisco nel comando precedente (questo era il problema e spiegherò il motivo sotto la piega)
risultati della discrepanza del comando du:
du output del comando della directory di origine (/sata1/home/ramya/):
# du -chs /sata1/home/ramya/ 167G /sata1/home/ramya/ 167G total
du output del comando della directory di destinazione (/tmp/home/ramya):
# du -chs /tmp/home/ramya/ 1.4G /tmp/home/ramya/ 1.4G total
Dalle istantanee sopra, puoi vedere che la directory di origine ha una dimensione di 167 GB e la directory copiata ha una dimensione di 1,4 GB. Allora, dove sono i dati rimanenti? Lascia che ti spieghi come ho risolto il problema.
Soluzione:
Per eseguire il debug del problema, ho utilizzato du comando per verificare la dimensione di ciascun file all'interno delle cartelle di origine e destinazione come mostrato di seguito:Elencando i file e confrontando le dimensioni del file.
bash-3.2#du -h -x /sata1/home/ramya 15G /sata1/home/ramya/.g4 48M /sata1/home/ramya/1SVC 13G /sata1/home/ramya/.g8 120M /sata1/home/ramya/techg/.techla 90G /sata1/home/ramya/.openVAS.tar-gz 16G /sata1/home/ramya/.VSL.zip ... ... | bash-3.2#du -h -x /tmp/home/ramya 1G /tmp/home/ramya/samplejobtoec 48M /tmp/home/ramya/1SVC 41M /tmp/home/ramya/M15 12K /tmp/home/ramya/techglimpse/openvas.txt 134M /tmp/home/ramya/etc/pki 264K /tmp/home/ramya/NAMD_CV ... ... |
Dall'output sopra, ho capito che i file nascosti non sono stati copiati ed era dovuto a "*" (asterisk)
utilizzato in rsync comando. L'asterisco espande tutti i file nel lavoro corrente directory tranne i file il cui nome inizia con un punto (file nascosti). Pertanto, rsync
non riceve mai i file nascosti come argomenti. Quindi la soluzione è utilizzare il nome dell'intera directory (invece dell'asterisco) come argomento per rsync comando.
rsync -avzlh --ignore-existing /sata1/home/ramya/ /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log
Nota:le barre finali alla fine di entrambi i percorsi. Qualsiasi altra sintassi può portare a risultati imprevisti!
Ecco! Ha funzionato.