#directory #rsync
#каталог #rsync
Вопрос:
Я новичок в rsync и немного прочитал об исключении файлов и каталогов, но я не до конца понимаю и, похоже, не могу заставить его работать.
Я просто пытаюсь запустить резервную копию всех веб-сайтов в веб-корне сервера, но мне не нужны какие-либо файлы кэша CMS.
Есть ли способ исключить любой каталог с именем cache?
За эти недели я много чего перепробовал (чего я не помню), но совсем недавно я пробовал подобные вещи:
sudo rsync -avzO -e --exclude *cache ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/
и это:
sudo rsync -avzO -e --exclude cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/
и это:
sudo rsync -avzO -e --exclude */cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/
и это:
sudo rsync -avzO -e --exclude *cache/ ssh username@11.22.33.44:/home/ /Users/username/webserver-backups/DEV/home/
Извините, если это просто, я просто не смог найти информацию, которую я понимаю, потому что все они говорят о пути для исключения.
Просто у меня нет определенного пути, который я хочу исключить — просто имя каталога, если это имеет смысл.
Ответ №1:
rsync --exclude cache/ ....
должно работать как персики. Я думаю, вы можете что-то путать, поскольку -e
требуется опция (например -e "ssh -l ssh-user"
). Редактировать при более внимательном рассмотрении ваших командных строк оказывается, что это именно ваша проблема. Вы должны были сказать
--exclude cache/ -e ssh
хотя вы могли бы просто отказаться -e ssh
, поскольку ssh используется по умолчанию.
Я бы также рекомендовал вам ознакомиться с правилами фильтрации:
rsync -FF ....
Таким образом, вы можете включить файлы .rsync-filter по всему дереву каталогов, содержащие такие вещи, как
-cache/
Это делает вещи более гибкими, делает командные строки более удобочитаемыми, и вы можете создавать исключения внутри определенных поддеревьев.
Комментарии:
1. Спасибо за это. Итак, чтобы проверить, я удалил опцию -e и попробовал cache / like this
sudo rsync -avzO --exclude cache/ ssh username@11.22.33.4:/home/ /Users/username/webserver-backups/LIVE/home/
, Но из-за косой черты в cache / rsync считает ssh каталогом, и я получаю сообщение об ошибке:/Users/username/ssh failed: No such file or directory
2. @CMSCSS: это ваша проблема прямо здесь. НЕ РАЗДЕЛЯЙТЕ
-e
иssh
. Как я уже сказал, ssh идет вместе-e
. Хотя, когда оболочка естьssh
, вы можете просто вообще отказаться от этой-e ssh
опции, поскольку она используется по умолчанию3. Хорошо, спасибо за это — теперь я понимаю! Итак, теперь это работает:
sudo rsync -avzO -e "ssh -l remote-username" --exclude cache/ 11.22.33.44:/home/ /Users/local-username/webserver-backups/DEV/home/
Ура!