rsync к удаленному каталогу

Я пытался обновить корневой каталог к резервному компьютеру как

rsync -avru --exclude-from='/home/me/exclude-me.txt' /home/me/* assistant@assistant.local:/home/assistant/* -p 2222

но получите ошибку

Unexpected remote arg: assistant@assistant.local:
rsync error: syntax or usage error (code 1) at main.c(1361) [sender=3.1.2]

Какова проблема с моими кодами?

2
задан 26 January 2019 в 14:16

2 ответа

Для rsync -p опция означает сохранять полномочия и не берет аргумент. Поэтому Ваша команда не может быть проанализирована правильно, и Вы получаете ошибку.

Если Вы хотите изменить порт SSH на который rsync должен соединиться, использовать команду следующим образом.

rsync -avru --exclude-from='/home/me/exclude-me.txt' -e 'ssh -p 2222' \ 
/home/me/ \
assistant@assistant.local:/home/assistant/
6
ответ дан 2 December 2019 в 01:35

Цель не должна иметь никаких подстановочных знаков. Лучше всего учиться использовать запаздывание/, или нет, по мере необходимости.

-p in rsync is permissions, not port. From the manpage:
        -p, --perms                 preserve permissions

rsync использовал ssh для удаленных соединений по умолчанию, по крайней мере, в течение десятилетия. Никакая потребность указать-e что-либо. Порт может быть добавлен к URL - userid@remote-server:port/path/to/target/. Если идентификатор пользователя совпадает с исходной машиной, он не необходим.

Так как ssh используется по умолчанию, с помощью ~/.ssh/config файл для обработки нестандартных настроек как альтернативные порты, различные идентификаторы пользователей, или различные ключи делают команды rsync более простыми. Удобно для использования имени, когда или имя DNS ужасно или только дюйм/с возможен также. Я нахожу, что файл конфигурации является хорошим способом зарегистрировать в полезном, все внешние системы, где у меня есть учетные записи, логины, и используют нестандартные порты.

  There are two different ways for rsync  to  contact  a  remote  system:
       using  a  remote-shell program as the transport (such as ssh or rsh) or
       contacting an rsync daemon directly via TCP.  The  remote-shell  transâ
       port  is used whenever the source or destination path contains a single
       colon (:) separator after a host specification.   

Но это больше о ssh-fu, чем rsync-fu.

rsync страница справочника является чрезвычайно всесторонней. Многие люди находят, что explainshell.com полезен для сложных команд как rsync, или найти. При включении исходной команды в explainshell-p выскакивает как проблема.

Так, после вышеупомянутых упрощений (особенно использующий ~/.ssh/config файл, команды становятся:

$ rsync -avru --exclude-from='/home/me/exclude-me.txt' ~/* assistant@assistant.local:2222/home/assistant/ 

Я поместил бы идентификатор пользователя, недружелюбное имя хоста, порт в конфигурацию и сделал бы это этот путь:

$ rsync -avz --exclude-from='/home/me/exclude-me.txt' ~/ backsrv:

~/* или/home/me /* пропустит что-либо, что начинается с периода, как файлы конфигурации и ~/.config/каталог. Если Вы хотите их, и Вы должны, то определенный regex необходим, ИЛИ просто используйте/home/me в качестве источника без любого regex шаблона. Посмотрите выше. Отметьте, как я не указывал каталога на цели? По умолчанию ДОМ идентификатора пользователя используется. И не забывайте о - опция пробного прогона:

        -n, --dry-run               perform a trial run with no
changes made

Если бы цель для ежедневного резервного копирования, возможно, использование инструмента с имеющими версию резервными копиями имело бы смысл?

1
ответ дан 2 December 2019 в 01:35

Другие вопросы по тегам:

Похожие вопросы: