if ($answer_counter == 1): ?>
endif; ?>
Проблема заключается в том, что вы указываете полные пути к каталогам.
С помощью rsync все пути исключения (или включения), начинающиеся с /
, привязаны к корню передачи . Корнем передачи в этом случае является /home/chris
. Если вы это сделали:
rsync -Paz --exclude-from 'rsync-exclude.txt' / [email protected]:
р>
... тогда ваши исключения должны работать.
Но поскольку вы просто пытаетесь синхронизировать свой домашний каталог и нет подкаталога /home/chris
с именем home/chris/Downloads
, он игнорирует ваше исключение.
Попробуйте удалить /home/chris
из файла rsync-exclude.txt
.
На самом деле вам просто нужна одна строка в файле:
/Downloads
ПРИМЕЧАНИЕ . Если вы не указали ведущий /
, и у вас был каталог с именем /home/chris/special-stuff/Downloads
, это также было бы исключено. Я предполагаю, что вы хотите исключить свой «верхний уровень» (относительно исходного каталога, так называемого «root of transfer») Downloads
, поэтому вам понадобится ведущий /
.
Кстати, если бы у вас была (только) строка /Downloads/*
в вашем файле, это обеспечило бы, что каталог Downloads
существует на целевом объекте, но не копирует его содержимое! р>
На самом деле, если вам нужно только исключить один каталог, было бы проще просто сделать это (без файла исключения вообще):
rsync -Paz --exclude /Downloads /home/chris/ [email protected]:LinuxHome
Я вижу, что вы поняли это правильно, но те, что новичок в rsync, должны отметить косую черту в конце /home/chris/
. Чтобы процитировать страницу rsync
man, вы можете думать о конце или в источнике как о значении «копировать содержимое этого каталога», а не «копировать каталог по имени» ». Поэтому, если вы остановили эту завершающую косую черту, в конечном итоге вы получите каталог с именем chris
в целевом каталоге, содержащий все из /home/chris
(за исключением исходного каталога Downloads
, конечно).