Saya mencoba untuk rsync direktori A dari server1 dengan direktori B dari server2.
Duduk di direktori A server1, saya menjalankan perintah berikut.
rsync -av * server2::sharename/B
tetapi yang menarik adalah, ini mensinkronisasi semua file dan direktori kecuali .htaccess atau file tersembunyi di direktori A. Semua file tersembunyi di dalam subdirektori akan disinkronkan.
Saya juga mencoba perintah berikut:
rsync -av --include=".htaccess" * server2::sharename/B
tapi hasilnya sama saja.
Ada ide mengapa file tersembunyi dari direktori A tidak disinkronkan dan cara memperbaikinya. Saya menjalankan sebagai pengguna root.
Terima kasih
Jawaban:
Ini karena fakta bahwa
*
secara default diperluas ke semua file di direktori kerja saat ini kecuali file yang namanya dimulai dengan titik. Jadi,rsync
jangan pernah menerima file ini sebagai argumen.Anda dapat meneruskan yang
.
menunjukkan direktori kerja saat ini kersync
:Dengan cara ini
rsync
akan mencari file untuk ditransfer di direktori kerja saat ini daripada mencarinya di apa*
perluasan.Atau, Anda dapat menggunakan perintah berikut untuk
*
memperluas ke semua file termasuk yang dimulai dengan titik:shopt -s dotglob
Lihat juga halaman manual shopt .
sumber
rsync -avz [email protected]:/remote/path/. /destination/path
apakah pekerjaan ituBagi siapa saja yang hanya mencoba untuk direktori sinkron antara server (termasuk semua file yang tersembunyi) - misalnya, sinkronisasi
somedirA
padasource-server
kesomedirB
pada server tujuan - coba ini :Perhatikan garis miring di ujung kedua jalur. Sintaks lainnya dapat memberikan hasil yang tidak diharapkan!
Selain itu, bagi saya yang paling mudah adalah melakukan
rsync
perintah dari server tujuan, karena lebih mudah memastikan saya mendapat akses tulis yang tepat (yaitu, saya mungkin perlu menambahkansudo
perintah di atas).Mungkin tidak perlu dikatakan lagi, tetapi jelas pengguna jarak jauh Anda juga membutuhkan akses baca ke
somedirA
server sumber Anda. :)sumber
.htaccess
file?-e ssh
menentukan metode untuk menghubungkan.Saya memiliki masalah yang sama.
Bagi saya ketika saya melakukan perintah berikut, file yang tersembunyi tidak bisa disinkronkan
Tetapi ketika saya menambahkan garis miring di ujung jalur, file tersembunyi telah disinkronkan.
Perhatikan garis miring di ujung jalan , seperti yang dikatakan Brian Lacy bahwa garis miring adalah kuncinya. Saya tidak memiliki reputasi untuk mengomentari posnya atau saya akan melakukannya.
sumber
shopt -s dotglob
ke skrip Anda sebelum rsyncSaya pikir masalahnya adalah karena ekspansi wildcard shell. Gunakan. bukan bintang.
Perhatikan contoh konten direktori berikut
Ekspansi karakter pengganti shell menerjemahkan daftar argumen yang didapat dari program rsync
ke
sebelum perintah mulai dijalankan.
sumber
Perintah
*
untuk rsynch agar tidak menyinkronkan file tersembunyi. Anda tidak boleh mengabaikannya.sumber