Cara mencadangkan struktur direktori mengabaikan file & direktori tanpa izin baca

9

Adakah ide untuk membuat cadangan struktur direktori yang ada beberapa file dan / atau direktori di mana Anda tidak memiliki izin untuk membaca? Saya ingin mengabaikannya saja, tanpa cadangan (tar? Jar?) Mogok.

pengguna3228053
sumber

Jawaban:

8

Gnu tar memiliki opsi --ignore-failed-readyang melakukan hal itu.

Jika Anda tidak menggunakan tar GNU, Anda bisa membuat daftar file untuk dicadangkan, atau daftar file untuk dikecualikan. GNU find memiliki -readablepredikat yang menguji apakah Anda telah membaca izin pada file. Dengan versi lain dari pencarian, untuk bertahan findsendiri, Anda harus memperkirakan ini dengan izin file ( -perm) dan kepemilikan ( -user, group), yang membuatnya sulit untuk mengatasi grup, ACL, dll. Anda bisa mendapatkan tes yang tepat dengan menelepon program eksternal atau builtin shell test. Berikut ini sebuah contoh dengan asumsi Anda tarmemiliki opsi -Xuntuk membaca daftar nama file yang dipisahkan oleh baris baru (nama file yang mengandung baris baru dilewati, untuk menghindari masalah penguraian):

find . ! -name '*
*' -exec sh -c 'for x; do [ -r "$x" ] || printf "%s\\n" "$x"; done' _ {} |
tar -cf backup.tar -X - .
Gilles 'SANGAT berhenti menjadi jahat'
sumber
Pertama kali bekerja dengan sempurna dengan --ignore-gagal-baca, terima kasih banyak. Sistem adalah Red Hat sehingga GNU tar ada di tempatnya.
user3228053
2

Jika Anda tidak memiliki baris baru di jalur, Anda dapat melakukan ini:

find . -type f -readable -print | tar cf test.tar -T -

Ini mungkin terbatas pada GNU finddan tardan mungkin tidak bekerja dengan sistem file tertentu (NFS, FUSE). Jika ada atau mungkin baris baru maka gunakan -print0sebagai ganti -printuntuk finddan tambahkan --nulluntuk tar.

Hauke ​​Laging
sumber