Saya ingin rsync berbagai sumber dan saya ingin tahu cara terbaik untuk mencapainya.
misalnya
/etc/fstab
/home/user/download
Saya memikirkan 3 solusi:
- Solusi 1
beberapa panggilan ke rsync
rsync -a /etc/fstab bkp
rsync -a /home/user/download bkp
con: sulit untuk memiliki stat yang disetujui
- Solusi 2
buat tobackup
folder yang berisi symlink, dan gunakan -L
opsi
sync -aL /home/user/tobackup bkp
con: konten ke cadangan tidak boleh mengandung symlink
- Solusi 3
pindahkan file ke dalam cadangan dan buat symlink di lokasi asli
rsync -a /home/user/tobackup bkp
con: beberapa konfigurasi manual
Mana yang Anda rekomendasikan?
Apakah ada cara yang lebih baik?
Jawaban:
Anda dapat melewati beberapa argumen sumber.
Ini menciptakan
bkp/fstab
danbkp/download
, seperti perintah terpisah yang Anda berikan. Mungkin diinginkan untuk melestarikan struktur sumber sebagai gantinya. Untuk melakukan ini, gunakan/
sebagai sumber dan gunakan aturan sertakan-kecualikan untuk menentukan file mana yang akan disalin. Ada dua cara untuk melakukan ini:Secara eksplisit menyertakan setiap file dan juga setiap komponen direktori yang mengarah ke sana, dengan
/***
di akhir direktori ketika Anda ingin menyalin seluruh pohon direktori:Sertakan semua direktori tingkat atas dengan
/*/
(sehingga rsync akan melintasi/etc
dan/home
ketika mencari file untuk disalin) dan direktori tingkat kedua dengan/*/*/
(untuk/home/user
), tetapi hapus direktori di mana tidak ada file yang disalin. Ini lebih nyaman karena Anda tidak perlu membuat daftar orang tua secara eksplisit. Anda bahkan dapat menggunakan--prune-empty-dirs --include='*/'
alih-alih menghitung jumlah level, tetapi ini tidak praktis di sini karena rsync akan melintasi seluruh sistem file untuk menjelajahi direktori meskipun tidak ada aturan penyertaan yang dapat menandingi apa pun di luar/etc
dan/home/user/download
.sumber
Saya sangat suka jawaban Gilles, namun, saya ingin menambahkan bahwa dalam pandangan saya persyaratan untuk menyinkronkan beberapa folder sambil mempertahankan struktur direktori paling baik dipenuhi dengan melewati beberapa sumber argumen bersamaan dengan
--relative
opsi.Dalam hal ini, kita dapat memiliki sesuatu sebagai berikut:
yang akan menghasilkan
bkp/etc/fstab
danbkp/home/user/download
.Bagian terbaik tentang ini adalah bahwa (saya percaya karena rsync v. 2.6.7) pada dasarnya kita dapat mengontrol seberapa banyak struktur direktori yang ingin kita tiru pada receiver.
(Lihat dokumentasi pada
--relative
opsi di sini )Jadi misal jika kita melakukan ini
kita akan berakhir dengan
bkp/user1/download
danbkp/user2/download
.sumber
Ini juga berfungsi - kurung kurawal, berisi daftar sumber yang dipisahkan koma.
Agak mirip dengan apa yang terjadi ketika Anda memanggil curt kawat gigi sytnax dengan cp dan utilitas tertentu lainnya:
sumber
-e