GNU/Linux >> Belajar Linux >  >> Linux

[Diselesaikan]:Mengapa rsync tidak menyalin file/direktori Tersembunyi dan Mengapa tanda bintang tidak menyertakan file tersembunyi (titik) di Linux?

Saya menggunakan rsync perintah untuk menyalin direktori pengguna tertentu dari satu perangkat penyimpanan ke perangkat lain. Operasi selesai dengan sukses tanpa memberikan peringatan/kesalahan. Tapi yang mengejutkan saya, data yang akan disalin sekitar 167GB dan data yang disalin hanya 1,4GB! Saya menggunakan perintah 'du' untuk menghitung ukuran disk dari folder sumber dan tujuan dan memastikan bahwa 'du' tidak menampilkan hasil yang tidak menentu dengan mengikuti tutorial ini – cara memperbaiki statistik penggunaan disk yang tidak menentu dari du. Di bawah ini adalah cuplikan yang menjelaskan skenario tersebut.

Skenario: Mari kita asumsikan – titik penyimpanan lama adalah '/sata1/home/ramya' dan titik penyimpanan baru adalah '/tmp/home/ramya'. Seperti yang diceritakan sebelumnya, saya menggunakan rsync untuk menyalin direktori seperti yang ditunjukkan di bawah ini:

usr/bin/rsync -avzlh /sata1/home/ramya/* /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log

Cari 'tanda bintang' pada perintah di atas (itulah masalahnya dan saya akan menjelaskan alasannya di paro bawah)

du temuan perbedaan perintah:

du keluaran perintah dari direktori sumber (/sata1/home/ramya/):

# du -chs /sata1/home/ramya/167G /sata1/home/ramya/167G total

du perintah output dari direktori tujuan (/tmp/home/ramya):

# du -chs /tmp/home/ramya/1.4G /tmp/home/ramya/1.4G total

Dari cuplikan di atas, Anda dapat melihat bahwa direktori sumber berukuran 167 GB dan direktori yang disalin berukuran 1.4 GB. Jadi di mana data yang tersisa? Biarkan saya menjelaskan bagaimana saya memperbaiki masalah ini.

Solusi:

Untuk men-debug masalah, saya menggunakan du perintah untuk memeriksa ukuran setiap file di dalam folder sumber dan tujuan seperti yang ditunjukkan di bawah ini:Dengan membuat daftar file dan membandingkan ukuran file.

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......

Dari output di atas, saya mengerti bahwa file yang disembunyikan tidak disalin dan itu karena “*" (asterisk) digunakan di rsync memerintah. Tanda bintang akan memperluas semua file yang sedang bekerja direktori kecuali file yang namanya dimulai dengan titik (file tersembunyi). Jadi, rsync tidak pernah menerima file tersembunyi sebagai argumen. Jadi solusinya adalah menggunakan seluruh nama direktori (bukan tanda bintang) sebagai argumen untuk rsync perintah.

rsync -avzlh --ignore-existing /sata1/home/ramya/ /tmp/home/ramya/ | tee /tmp/$(date+"%F_%R")-backup.log

Catatan:Garis miring di akhir kedua jalur. Sintaks lainnya dapat menyebabkan hasil yang tidak diharapkan!

Voila! Berhasil.


Linux
  1. Salin file &direktori di Linux

  2. Bagaimana cara menggunakan perintah Rsync di linux?

  3. Bagaimana cara menyalin file dan subdirektori tersembunyi (dimulai dengan titik) di linux?

  1. Temukan file dan direktori di Linux dengan perintah find

  2. Bagaimana Cara Menyalin File di Linux dan Unix? Contoh Perintah 10 cp

  3. du perintah tidak mengurai direktori tersembunyi

  1. Cara Menyalin File dan Direktori di Linux

  2. Cara Menghapus Direktori dan File Menggunakan Linux

  3. Mengapa rsync gagal menyalin file dari /sys di Linux?