Saya mendapatkan kesalahan yang membingungkan dari rsync dan hal-hal awal yang saya temukan dari pencarian web (dan juga semua chmod'ing yang biasa) tidak menyelesaikannya:
rsync: failed to set times on "/foo/bar": Operation not permitted (1)
rsync error: some files could not be transferred (code 23)
at /SourceCache/rsync/rsync-35.2/rsync/main.c(992) [sender=2.6.9]
Tampaknya berfungsi meskipun ada kesalahan itu, tapi alangkah baiknya untuk menyingkirkan itu.
rsync
file-transfer
Dreeves
sumber
sumber
Jawaban:
Jika
/foo/bar
ada di NFS (atau mungkin beberapa filesystem FUSE), itu mungkin masalahnya.Either way, menambahkan
-O
/--omit-dir-times
ke baris perintah Anda akan menghindarinya mencoba mengatur waktu modifikasi pada direktori.sumber
-O
tentu saja tidak membantu. Ini tidak terjadi ketika partisi cadangan saya adalah ext3 bukan ext4.--no-t
untuk menghapus opsi tersirat.Masalahnya mungkin karena / foo / bar tidak dimiliki oleh proses penulisan pada sistem darwin jarak jauh (OS X). Solusi untuk masalah ini adalah dengan menetapkan pemilik yang memadai di situs jarak jauh.
Karena jawaban ini telah dipilih, dan karena itu semoga bermanfaat bagi seseorang, saya memperluasnya untuk membuatnya lebih jelas.
Alasan mengapa hal ini terjadi adalah rsync mungkin mencoba untuk mengatur waktu modifikasi sewenang-wenang (mtime) saat menyalin file.
Untuk melakukan ini
utime()
fungsi sistem Darwin mensyaratkan bahwa proses penulisan uid efektif adalah sama dengan file uid atau super user, lihat halaman opengroup utime . Periksa diskusi ini di milis rsync sebagai referensi.sumber
/remote/path/to/foo/bar
di server jarak jauh dengan perintah ini:rsync -avzP --exclude '.DS_Store' /local/path/to/foo/bar/ [email protected]:/remote/path/to/foo/bar
dan mendapat pesan kesalahan yang sama yang hilang ketika saya membuatuser1
pemilik/remoe/path/to/foo/bar
seperti ini:$ chown -R user1 /remote/path/to/foo/bar
Ketika @ racl101 mengomentari jawaban, masalah ini mungkin terkait dengan pemilik folder . Perintah rsync harus dilakukan oleh pengguna yang sama dengan pemilik folder. Jika tidak sama, Anda dapat mengubahnya.
sumber
Masalah dalam kasus saya adalah "mountpoint penerima" tidak terpasang dengan benar. Itu dalam mode read-only (untuk beberapa alasan aneh). Sepertinya rsync menyalin file, tetapi ternyata tidak. Saya memeriksa file fstab saya dan mengubah opsi mount ke default, me-mount kembali sistem file dan menjalankan rsync lagi. Baiklah kalau begitu.
sumber
Saya memiliki masalah yang sama. Bagi saya solusinya adalah menghapus file jarak jauh dan biarkan
rsync
buat lagi.sumber
Saya telah melihat masalah itu ketika saya menulis ke sistem file yang tidak (dengan benar) menangani waktu - saya pikir SMB membagikan atau FAT atau sesuatu.
Apa sistem file target Anda?
sumber
sudo port install rsync
) dan itu akan berkurang. Untuk memeriksanyarsync --version
:: rsync versi 3.0.5 protokol versi 30 ... append, ACLs, xattrs, iconv, symtimes, file-flags ... (ACLs dan xattrs adalah yang penting)Bisa jadi Anda tidak memiliki hak istimewa untuk beberapa file. Dari akun administrator, coba "sudo rsync -av" Bergantian, aktifkan akun root dan masuk sebagai root. Itu akan memungkinkan Anda untuk sepenuhnya menyemprot sistem Anda dan memaksa rsync Anda! ;-) Saya tidak yakin apakah atribut --extended yang disebutkan di atas akan membantu, tapi saya juga memasukkannya, hanya untuk ukuran yang baik.
sumber
Ini terjadi pada saya di partisi tipe
xfs (rw,relatime,seclabel,attr2,inode64,noquota)
, di mana direktori di mana dimiliki oleh pengguna lain dalam grup kami sama-sama anggota. Keanggotaan grup sudah ditetapkan sebelum login, dan seluruh struktur direktori dapat ditulis grup. Saya telah menjalankansudo chown -R otheruser.group directory
dansudo chmod -R g+rw directory
mengkonfirmasi ini .Saya masih tidak tahu mengapa itu tidak berhasil pada awalnya, tetapi mengambil kepemilikan dengan
sudo chown -R myuser.group directory
memperbaikinya. Mungkin SELinux terkait?sumber
utime()
agar berfungsi. Anda juga dapat menjalankannya sebagai root dan melakukannya. Tetapi jika UID file berbeda, mereka tidak membiarkan Anda mengubah waktu ke hal lain selain "sekarang".utime()
.Kesalahan ini mungkin juga muncul jika Anda menjalankan proses rsync untuk file yang tidak baru-baru ini dimodifikasi di sumber atau tujuan ... karena itu tidak dapat mengatur waktu untuk file yang baru dimodifikasi.
sumber