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.