我需要将目录结构从我网络中的 Linux 主机传输到客户网络中的另一台 Linux 主机,然后进行更新。我只能通过 Citrix 客户端访问客户网络。我可以通过 SSH 登录,也可以通过 SCP 复制文件,但无法在两个网络之间进行任何类型的端口转发。
显然,第一次我必须将整个目录结构复制为 tarball。但之后,有没有办法根据远程目录结构列表优化 tarball 的创建?
有人可以推荐一个 unix 命令行工具来帮助解决上述问题吗?
答案1
您可以通过 ssh 使用增量 tar 存档和 gnu tar(但不是 bsd tar)来传输更改。第一个 tar 将是级别 0,然后是级别 1...您需要保留快照.snar 文件并每次都引用它,否则它将创建一个新的级别 0。
$ tar --listed-incremental snapshot.snar -cf - dir | ssh user@host "tar --listed-incremental=/dev/null -xf -"
如果您想使用压缩来加快传输速度,您可以在两个 tar 命令中添加“z”或“j”开关。
答案2
您可以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/
答案3
您可以使用 rsync+ssh 来执行此操作(使用 rsync“-e”选项)。
例子:
rsync -avu -e 'ssh' /local/dir/appA user@host:remote_dir/