Jadi, saya memiliki masalah yang tampaknya sederhana, tetapi sejauh ini saya belum menemukan solusi: Saya ingin mengecualikan direktori paling atas dari rsync, sementara masih menyinkronkan semua anak-anaknya. Masalah khusus adalah bahwa saya tidak memiliki izin untuk mengubah waktu direktori paling atas, tetapi ingin semua anak memiliki waktu yang disinkronkan dengan benar.
Perintah rsync yang saya gunakan adalah sebagai berikut:
rsync --exclude ./ -rlptDu ./ server.example.com:/usr/local/directory/
dan server.example.com:/usr/local/directory/
terlihat seperti ini:
drwxrws--- 5 root staff 24576 Jul 9 15:00 .
(pengguna lokal saya adalah anggota staff
)
Ketika saya menjalankan rsync, saya mendapatkan kesalahan berikut:
rsync: failed to set times on "/usr/local/directory/.": Operation not permitted (1)
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1070) [sender=3.0.9]
make: *** [pub_to_mel_internal] Error 23
Ini adalah versi 3.0.9 pada mesin lokal dan 3.0.7 pada remote, kedua mesin menjalankan Debian.
Jawaban:
Saya pikir aturan filter rsync tidak bisa cocok dengan direktori tingkat atas, jadi selalu disinkronkan. Solusinya adalah menyinkronkan semua file di dalam direktori ini, bukan direktori itu sendiri.
Tambahkan
.[!.]*
setelah*
jika Anda memiliki file titik di direktori paling atas, dan..?*
jika Anda memiliki nama file yang dimulai dengan dua titik.sumber
*
adalah--delete
tidak menghapus file, karena mereka bukan bagian dari pencarian.