GNU/Linux >> Linux Esercitazione >  >> Linux

[Risolto]:perché rsync non ha copiato file/directory nascosti e perché asterisk non include file nascosti (punto) in Linux?

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.


Linux
  1. Trova file e directory su Linux con il comando find

  2. Copia file e directory in Linux

  3. Come usare il comando Rsync in Linux?

  4. Come copiare file in Linux e Unix? 10 cp Esempi di comandi

  5. Il comando du non analizza le directory nascoste

Come spostare file e directory in Linux (comando mv)

Come utilizzare il comando cp per copiare file e directory

Come eseguire il backup di file e directory utilizzando Rsync in Linux

Mantenere sincronizzati file e directory Linux con rsync

Come copiare file e directory nel terminale Linux

4 modi per trasferire file e directory su Linux