Мне нужно перенести и затем обновить структуру каталогов с хоста Linux в моей сети на другой хост Linux в сети клиента. Мой единственный доступ к клиентской сети - через клиента Citrix. Я могу войти в систему через SSH, и я могу копировать файлы через SCP, но я не могу выполнять переадресацию портов между двумя сетями.
Очевидно, что в первый раз мне придется скопировать всю структуру каталогов в виде архива. Но после этого есть ли способ оптимизировать создание архива на основе списка структуры удаленных каталогов?
Может ли кто-нибудь порекомендовать инструмент командной строки unix, чтобы помочь с вышеуказанным?
Вы можете использовать инкрементные tar-архивы с gnu tar (но не bsd tar) поверх ssh для передачи только изменений. Первый tar будет уровня 0, затем уровня 1 ... Вам нужно сохранить файл snapshot.snar и ссылаться на него каждый раз, иначе он создаст новый уровень 0.
$ tar --listed-incremental snapshot.snar -cf - dir | ssh user@host "tar --listed-incremental=/dev/null -xf -"
если вы хотите использовать сжатие для ускорения передачи, вы можете добавить переключатель «z» или «j» к обеим командам tar.
Для этого вы можете использовать rsync + ssh (используя параметр rsync "-e").
Пример: rsync -avu -e 'ssh' /local/dir/appA user@host:remote_dir/
Вы можете просто rsync -av /local/dir/appA user@host:remote_dir/
- но rsync
программа должна быть установлена на стороне сервера.
Если там не установлен rsync, вы можете использовать:
mkdir /tmp/host
sshfs user@host:remote_dir/ /tmp/host/
а потом:
rsync -av /local/dir/appA/ /tmp/host/