rsync error: gagal mengatur waktu di "/ foo / bar": Operasi tidak diizinkan

194

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.

Dreeves
sumber
tidak, hanya direktori normal sejauh yang saya tahu.
dreeves
Baru saja mengalami masalah yang sama, meskipun kode kesalahan saya adalah 22: rsync: gagal mengatur waktu pada ... Argumen tidak valid (22). Setelah beberapa pengecekan ternyata file saya diberi tanggal sebagai terakhir dimodifikasi pada tahun 1956! Solusi: sentuh semua file, masalah terpecahkan. :) "find. -print0 | xargs -0 touch"
KIAaze
Saya menemukan bahwa jika Anda juga telah mengatur tugas cron ke tujuan yang sama, kesalahan ini akan muncul. Mengubah waktu untuk pekerjaan cron (crontab) akan membantu mengatasinya. Dalam kasus saya, saya hanya mendapatkan kesalahan ini jika saya melakukan rysnc manual jika saya juga mengatur pekerjaan cron.
NelsonGon

Jawaban:

286

Jika /foo/barada di NFS (atau mungkin beberapa filesystem FUSE), itu mungkin masalahnya.

Either way, menambahkan -O/ --omit-dir-timeske baris perintah Anda akan menghindarinya mencoba mengatur waktu modifikasi pada direktori.

Jon Bright
sumber
8
Lucunya saya menyinkronkan ext3 ke ext3 kedua OS adalah linux. Saya belum pernah menggunakan saklar ini sebelumnya. -O melakukan trik, tapi saya berharap saya tidak harus menggunakannya.
d -_- b
3
Terima kasih! Ternyata beberapa host VPS (misalnya xlshosting.nl) menggunakan ini secara internal, yang dapat memberikan masalah dengan rsync.
Frederik
2
Saya memiliki masalah yang sama rsyncing dari Linux ext4 ke Linux ext4: a "tidak dapat mengatur waktu: operasi tidak diizinkan" untuk symlink , bukan direktori. -Otentu saja tidak membantu. Ini tidak terjadi ketika partisi cadangan saya adalah ext3 bukan ext4.
Marius Gedminas
10
Saya menggunakan rsync -avc, dan menambahkan -O tidak membantu. Saya kemudian membaca bahwa -a adalah equiv ke -rlptgoD yang mencakup -t yang saya kira mengesampingkan -O. Jadi bagi saya memperbaiki itu untuk menggunakan -rlpgoDvc
DLINK
3
@ tautan yang dapat Anda tambahkan --no-tuntuk menghapus opsi tersirat.
Noam Nelke
86

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.

anddam
sumber
10
Sama di Linux (Debian Squeeze dalam kasus saya) ... Jika saya bukan pemilik direktori target, rsync memberikan pesan kesalahan "gagal mengatur waktu". (Memiliki izin menulis pada direktori tidak cukup.)
ddekany
1
Saya terjebak dalam masalah yang sama. Sampai me-mount NTFS dengan uid = pengguna.
gavenkoa
3
Kesalahan ini hilang ketika saya mengubah pemilik direktori yang saya coba pengaruhi (pada server jauh) menggunakan perintah rsync ke pengguna yang sama dengan yang mencoba masuk melalui rsync pada skrip Bash lokal saya. Dengan kata lain: Saya mencoba menulis /remote/path/to/foo/bardi 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 membuat user1pemilik /remoe/path/to/foo/barseperti ini:$ chown -R user1 /remote/path/to/foo/bar
racl101
1
Jika Anda berbagi file dengan pengguna lain dalam sebuah grup, misalnya Anda menggunakan bit sticky maka mengubah pemilik bukanlah solusi yang sebenarnya. Kami tidak menggunakan -t dan menambahkan -O untuk mencegah peringatan ini.
R. van Twisk
1
Bisakah Anda memperluas jawaban untuk diuraikan jika pengguna adalah bagian dari grup yang memiliki file / dir jika seharusnya ATAU tidak bekerja?
Elijah Lynn
4

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.

chown -R userCorrect /remote/path/to/foo/bar
Lud Akell
sumber
2

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.

ripah
sumber
2

Saya memiliki masalah yang sama. Bagi saya solusinya adalah menghapus file jarak jauh dan biarkan rsyncbuat lagi.

shintaroid
sumber
0

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?

David Wolever
sumber
Saya menggunakan mac, rsync'ing ke linux (mesin slicehost).
dreeves
Ah, aneh ... Karena Anda menggunakan rsync di mac, saya harus memperingatkan Anda: itu tidak melindungi semua atribut file OS X dengan benar, sehingga Hal Buruk dapat terjadi. Lihat, misalnya: blog.plasticsfuture.org/2006/04/23/mac-backup-software-harmful
David Wolever
Anda dapat, bagaimanapun, menggunakan versi terbaru dari MacPorts ( sudo port install rsync) dan itu akan berkurang. Untuk memeriksanya rsync --version:: rsync versi 3.0.5 protokol versi 30 ... append, ACLs, xattrs, iconv, symtimes, file-flags ... (ACLs dan xattrs adalah yang penting)
David Wolever
1
rsync di Macintosh memang mengatur semua atribut file dan telah melakukannya selama beberapa waktu, harap perhatikan URL yang merujuk "Hal-hal Buruk bisa terjadi" tertanggal 2006!
tgunr
2
Jawaban seharusnya tidak mencakup pertanyaan. Ini akan lebih tepat sebagai komentar.
Brian
0

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.

Kapten
sumber
0

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 menjalankan sudo chown -R otheruser.group directorydansudo 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 directorymemperbaikinya. Mungkin SELinux terkait?

Sam Brightman
sumber
Halaman manual mengatakan UID aplikasi. harus cocok dengan UID file 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".
Alexis Wilke
Bisakah Anda menautkan ke halaman manual seperti itu? Tidak ada yang menyebutkan saya utime().
Sam Brightman
1
linux.die.net/man/2/utime Paragraf yang bersangkutan: "Mengubah stempel waktu diizinkan ketika: salah satu proses memiliki hak yang sesuai, atau ID pengguna yang efektif sama dengan ID pengguna file, atau kali NULL dan proses memiliki tulis izin untuk file tersebut. "
Alexis Wilke
0

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.

Gurdeep Singh
sumber