我租用了几个带有 Ubuntu 的 VPS,并且我已经成功填满了其中一个。这里有几个目录,其中有很多我想放入存档的文件。不幸的是,我没有足够的空间来创建这样的存档(甚至没有作为根用户)。
因此,我想知道是否可以使用 tar(首选)或 cpio 在其他 VPS 上创建存档?我想压缩存档,因此要么tar
使用 j 选项(bzip2)调用,要么在某个时间点(最好在通过网络发送之前)将文件传输到管道bzip2
- 关于如何最好地压缩文件,有什么建议吗?
最后,两个VPS都安装了ssh和sshd,所以我想用它来传输文件。
+++
不幸的是,我不是以这种方式使用 tar/cpio 或 ssh 的专家,所以对于可以(最好)完成这样的事情,我有点超出了我的深度。我应该如何使用ssh
?像隧道或管道,像 ftp,像 scp?我应该如何使用tar
?在两个 VPS 上运行tar
,并且它们之间有 ssh 隧道?在源 VPS 上运行 tar,通过隧道传输结果并将结果重定向到目标 VPS 上的文件?
那么我该怎么做呢?
还有其他更好的方法来做这样的事情吗?一些特殊用途的包?使用网络套接字?还有别的事吗?
答案1
管道应该足够了。只做:
tar -cvj /path/to/your/files | ssh remote "cat > file.tar.bz2"
(如果您设置了使用密钥的无密码登录)
稍后在另一台机器上您可以使用解压缩接收到的文件tar -xvf path.tar.bz2 -C ./
答案2
您可以使用类似的方法通过 ssh 进行存档和复制:
tar zcvf - stuff/ | ssh alex@localhost 'cat - > /tmp/stuff.tar.gz'
在这里,您正在创建一个 tar.gz 存档,但不是将其保存到您正在使用的某个文件中-这是标准输出。标准输出-然后通过管道传输到 ssh 并从那里从标准输出到你的猫猫->并重定向到第二台机器上的文件。
评论中用户 Arkadiusz Drabczyk 的建议也很好,因为一旦设置好,您就可以使用MV从一台机器移动到另一台机器。如果你想使用 sshfs,你必须先安装它,然后再安装:
sudo sshfs [email protected]:/ /mnt/droplet
答案3
我总是会rsync
在这样的情况下使用。使得整个过程更加灵活可靠。例如,整个过程将是可重新启动的,并且可以在停止/失败/中断的地方继续。