Apakah ada cara untuk memberikan komentar di file rsync --files-from?

10

Saya punya file yang rsync gunakan sebagai --files-from:

dir1
dir2
dir3

Saya ingin dapat memberikan komentar di atas setiap entri dir seperti itu:

# my dir1 comment
dir1

#dir2 comment
dir2

#yet another comment
dir3

tetapi rsync mengeluh "Tidak ada file atau direktori"

Sejauh ini saya sudah mencoba #, //, - ,, SPACE

Apakah ada cara untuk mengomentari / menonaktifkan entri?

pengguna98989
sumber
Saya tidak mengetahui adanya mekanisme komentar untuk files-fromfile tersebut.
jw013

Jawaban:

17

Menurut manhalaman dirsync:

"... Baris kosong di FILE dan baris dimulai dengan ';' atau '#' diabaikan ... "

Saya baru saja menjalankan tes cepat dan memang #dan ;garis diabaikan.

rob_7cc
sumber
Saya tidak bisa detik ;tetapi #(mencari di sini , mencari ‚ketika aturan ... '). → Jadi bisa dibilang #sedikit lebih aman ...
Frank Nocke
Tidak ada di halaman manual rSync ini: linux.die.net/man/1/rsync , tidak ada dalam yang lain ini: ss64.com/bash/rsync.html . Bisakah Anda merujuk milik Anda?
Sopalajo de Arrierez
1
Halaman Anda memang menunjukkan bahwa baris yang dimulai dengan # adalah komentar: linux.die.net/man/1/rsync menunjukkan "... Ketika aturan sedang dibaca dari file, baris kosong diabaikan, seperti baris komentar yang dimulai dengan a lq # rq. ... "(lq dan rq adalah notasi untuk kutipan kiri dan kanan ... Saya tidak tahu mengapa halaman Web itu membuat kutipan sebagai singkatan ini). Apapun, # dalam file kecualikan rsync adalah komentar. Mungkin halaman manual yang Anda referensikan sudah tua. Anda dapat meninjau riwayat log rsync di sini: git.samba.org/?p=rsync.git;a=log
rob_7cc
Hal terbaik untuk dilakukan adalah melihat halaman manual pada platform tempat Anda mengembangkan untuk menentukan versi rsync yang Anda gunakan; Anda dapat mencari di halaman manual bagaimana komentar ditangani oleh versi rsync itu.
rob_7cc
10

Lakukan grep -v '^#' file > /tmp/filetmpdan luncurkan rsync Anda/tmp/filetmp

Bergantung pada shell Anda, Anda mungkin dapat menghindari file sementara (ini berlaku di Bash):

rsync --files-from <(grep -v '^#' file) …

<( … )Sintaks yang tampak aneh adalah apa yang Bash sebut proses substitusi .

Dom
sumber
3
Saya menambahkan pola ke grep Anda untuk Anda — saya berasumsi ini yang Anda maksudkan ... Saya juga akan menambahkan bash trick, jangan ragu untuk mengembalikan satu atau kedua suntingan jika Anda tidak setuju.
derobert
Anda dapat menggunakan --files-from=-untuk rsyncmembaca daftar dari input standar.
Kusalananda
-1

status untuk saat ini (rsync versi 3.1.1 protokol versi 31): semua baris mulai dari #atau ;diabaikan bahkan mantidak memiliki informasi tentang itu (kasus saya berbeda, saya ingin menyalin file bernama ;_chardan terkejut bahwa bahkan tidak menggunakan - Opsi -dari0 - setelah mengubah baris untuk ./;_charmulai bekerja). Tampaknya fungsi parsing yang sama digunakan untuk opsi --include-fromatau --exclude-from Untuk dua opsi ini mansebutkan halaman: Blank lines in the file and lines starting with ’;’ or ’#’ are ignored

ddzialak
sumber