2

Я использую rsync для подключения и резервного копирования на жесткий диск на удаленном компьютере, к которому у меня есть доступ по ssh. rsync подключается правильно. Код, который работает

rsync -av --progress -e "ssh -p port_number -i key/file/path" \
  "path/on/local/computer/to/back/up" \
  ssh_username@ssh_ip_address:"'path/on/remote/computer/to/back/up/to'"

Мне интересно, есть ли способ заставить rsync использовать опцию --log-file для генерации файла журнала на удаленной системе (я хочу, чтобы файл находился на том же удаленном жестком диске, на котором я выполняю резервное копирование) к). Каждый раз, когда я даю ему удаленный путь для использования в файле журнала (например, с --log-file="path/on/remote/computer"), кажется, что он ищет путь в моей локальной системе. Я даже попробовал --log-file=ssh_username@ssh_ip_address:path/on/remote/system , но это не сработало.

Возможно ли это, или мне нужно создать файл журнала в локальной системе и затем scp его в удаленную систему?

Как локальная, так и удаленная системы работают под управлением Ubuntu 12.04.

1 ответ1

1

Я бы сделал rsync для другого компьютера, а затем просто запустил команду scp чтобы поместить локально сгенерированный файл журнала в удаленную систему, где вы хотели бы, чтобы он хранился.

rsyncing файл + лог

% rsync -avz -e 'ssh' $HOME/sample.sh remotemach:~ \
                --log-file=$HOME/rsync.log ; scp $HOME/rsync.log remotemach:~

подтверждающий

% ls -l ~/rsync.log ~/sample.sh
-rwxrwxr-x 1 saml saml 10059 Oct 15 15:20 /home/saml/sample.sh
-rw-r--r-- 1 saml saml   192 Feb  2 14:57 /home/saml/rsync.log

% ssh remotemach "ls -l sample.sh rsync.log"
-rwxrwxr-x 1 saml saml 10059 Oct 15 15:20 sample.sh
-rw-r--r-- 1 saml saml   192 Feb  2 14:54 rsync.log

объединение журнала на удаленную сторону

Если вы хотите объединить результаты из rsync в удаленный файл, вы можете использовать составную команду (см. Справочную страницу bash). Здесь я обертываю rsync с помощью паренов и передаю его вывод в ssh через канал, то есть:

(rsync ...) | ssh ...

1-й файл скопирован

% (rsync -avz -e'ssh' $HOME/sample1.sh remotemach:~) \
                    | ssh remotemach "cat >> \$HOME/rsync.log"

подтвердить 1-ую копию

% ssh remotemach "ls -l sample*.sh rsync.log"
-rw-r--r-- 1 saml saml   133 Feb  2 19:49 rsync.log
-rwxrwxr-x 1 saml saml 10059 Feb  2 19:25 sample1.sh

2-й файл скопирован

% (rsync -avz -e'ssh' $HOME/sample2.sh remotemach:~) \
                    | ssh remotemach "cat >> \$HOME/rsync.log"

подтвердить 2-ю копию

% ssh remotemach "ls -l sample*.sh rsync.log"
-rw-r--r-- 1 saml saml   266 Feb  2 20:03 rsync.log
-rwxrwxr-x 1 saml saml 10059 Feb  2 19:25 sample1.sh
-rwxrwxr-x 1 saml saml 10059 Feb  2 19:25 sample2.sh

ПРИМЕЧАНИЕ. Обратите особое внимание на файл с правой стороны ssh . Обратите внимание, что путь $HOME имеет косую черту () перед $HOME . Это специально. Необходимо выйти из $HOME чтобы оболочка bash локального хоста не расширяла его.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .