Обратите внимание, что на уровне файловой системы есть NO D Iffere между ASCII и двоичными файлами. ASCII или текстовый файл - это просто двоичный файл, содержащий байты, которые являются читаемыми людьми (или команды управления, такие как LF = новая строка).
Чтобы отобразить сохраненные байты в двоичной форме, вы можете использовать XXD
(часть VIM
):
xxd -b INPUTFILE | cut -d" " -f 2-7 | tr "\n" " "
Чтобы сохранить результат в файле, используйте:
xxd -b INPUTFILE | cut -d" " -f 2-7 | tr "\n" " " > OUTPUTFILE
Согласно man rsync вы можете использовать:
--exclude=PATTERN
Или ваш список слишком большой, вы можете использовать:
--exclude-from=FILE
То, что вы описываете, является стандартным поведением по умолчанию для rsync.
Если бы вы хотели другое поведение, вам пришлось бы использовать одну из --delete
опций.
Это тест, который доказывает мою точку зрения:
$ mkdir tmp1
$ mkdir tmp2
$ mkdir tmp1/1
$ mkdir tmp1/2
$ mkdir tmp2/1
$ mkdir tmp2/X
$ touch tmp1/1/1.txt
$ touch tmp1/2/2.txt
$ rsync -avz tmp1 tmp2
sending incremental file list
tmp1/
tmp1/1/
tmp1/1/1.txt
tmp1/2/
tmp1/2/2.txt
sent 208 bytes received 62 bytes 540.00 bytes/sec
total size is 0 speedup is 0.00
$ ls tmp2
1 tmp1 X
Вы можете увидеть, что каталог X там, нетронутый.
Если вы используете его в качестве демона, возможно, ваша rsync
применяет опции из конфигурационного файла.
Посмотрите на /etc/rsyncd.conf
, чтобы увидеть, установлены ли там какие-либо опции удаления, или на rsyncd.conf
в домашнем каталоге пользователя, который запускает rsync