Я пытаюсь выполнить синхронизацию файла с моим экземпляром EC2:
rsync -Paz --rsh "ssh -i ~/.ssh/myfile.pem" --rsync-path "sudo rsync" file.pdf ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com:/home/ubuntu/
Это дает следующее сообщение об ошибке:
Warning: Identity file ~/.ssh/myfile.pem not accessible: No such file or directory.
ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com's password:
Файл pem определенно находится по пути ~/.ssh/myfile.pem
, хотя: vi ~/.ssh/myfile.pem
показывает мне файл.
Если я удалю удаленный путь с самого конца команды rsync:
rsync -Paz --rsh "ssh -i ~/.ssh/myfile.pem" --rsync-path "sudo rsync" file.pdf ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com
Затем команда работает ...
building file list ...
1 file to consider
file.pdf
41985 100% 8.79MB/s 0:00:00 (xfer#1, to-check=0/1)
sent 41795 bytes received 42 bytes 83674.00 bytes/sec
total size is 41985 speedup is 1.00
... но когда я перехожу на удаленный сервер, на самом деле ничего не передается.
Что я делаю не так?
--rsync-path "sudo rsync"
Это заставляет rsync запускаться привилегированным пользователем (корень), так ~/
это путь к домашнему каталогу корня. Если вы опустите эту часть кода, все должно работать.
PS. scp
работает, потому что вы запускаете его под своей обычной учетной записью.
PS2. Удаление удаленного пути также работает, но ничего не отправляет по сети, а просто копирует файл "file.pdf" в файл с именем ubuntu@ec2-XXX-XX-XX-X.compute-1.amazonaws.com ( видеть с ls -l
)
Когда это всего лишь пара файлов, используя rsync
не большая победа scp
. Но если вы управляете полным деревом документов, это здорово, потому что оно отправляет только различия. Вот что я всегда делаю:
Настройте запись для удаленного сервера в моем ~/.ssh/config
файл
Host easy-short-name
HostName ec2-XXX-XX-XX-X.compute-1.amazonaws.com
IdentityFile ~/.ssh/private_key.pem
User ubuntu
Затем вы можете просто использовать эту команду rsync, не связываясь с именами пользователей, ключевыми файлами или длинными именами хостов:
rsync -avrk source-dir easy-short-name:~/destination-dir
Эта установка также работает с scp
и позволяет мне просто использовать ssh easy-short-name
чтобы залогиниться.