我有一个 18GB 的 EC2 实例,空间已用完。我想将文件从服务器压缩并传输到本地驱动器。它只剩下大约 1% 的可用空间。这意味着我无法压缩驱动器上的任何内容,因为它一直出错zip I/O error: No space left on device
。有没有办法可以压缩所有内容而不使用额外的驱动器空间?
答案1
你可以通过 ssh 发出命令来压缩到 stdout,并将 stdout 本地重定向到文件。例如:
ssh user@host "tar c /mydir | gzip -f" > myarchive.tar.gz
答案2
以下工具在 Ubuntu 中可用,并且我已经检查过rsync
,在 MacOS 中gzip
也tar
可以使用。
rsync
可以在本地或通过网络复制文件和/或目录树gzip
压缩单个文件tar
它可以创建一个包含许多文件和目录树的档案,并且如果你指定的话还可以进行压缩。
更改目录
使用以下方法更改目录
cd path-to-source-directory
到要压缩的目录。
rsync
我无法物理访问服务器。我总是通过 ssh 进行通信。我会查找 rsync。谢谢。
rsync
是一款功能强大的复制工具,它具有内置检查,确保转账正确。
- 它可以在本地或通过网络复制文件和/或目录树
- 它通常用于备份
- 本地存储到外部驱动器或
- 通过与服务器或服务器之间的网络连接
rsync
如果连接的两端都有 Ubuntu,那么使用起来就很简单了,而且我检查过rsync
MacOS 中也有一个版本。
我喜欢以下命令行,其中选项
-H
考虑硬链接(并避免双重传输/复制);如果没有硬链接,则应删除此选项。-a
'archive' 制作适合备份或同步的副本-v
'verbose' 创建要复制的所有文件的输出-n
以及实际情况下复制的所有文件(无-n
)的输出-n
进行“试运行”,仅展示其“想要做什么”rsync -Havn source/ target
在你的情况下,源在服务器中,你通过连接运行ssh
。因此,在客户端(你的 Mac 电脑)中,运行
rsync -avn user-id@ip-address:/path-to-source-directory/ path-to-target-directory
请注意源目录后面的斜杠。
如果看起来不错,您可以使用以下命令让它进行传输(删除n
“dry run”)
rsync -av user-id@ip-address:/path-to-source-directory/ path-to-target-directory
提示和评论
转移后,您可以对目标目录中的副本进行任何操作。我认为您想压缩它,我建议您使用
tar
为了这个目的并创建一个 tarball。如果您无法在 MacOS 中运行
rsync
或gzip
,则tar
可以使用装有 Ubuntu 的 USB 闪存盘或 DVD 磁盘启动 Mac 计算机,然后以此方式运行程序。(使用 Ubuntu 从 USB 闪存盘或 DVD 磁盘启动计算机的建议也适用于装有 Windows 的计算机。)您可以阅读内置手册
man rsync
,man gzip
和man tar
在您的 Ubuntu 16.04 LTS 中,我相信您可以通过互联网找到好的教程。
gzip
将目录更改为cd path-to-source-directory
要压缩的目录。
使用以下方法压缩单个文件
gzip -c file > path-to-external-directory/file.gz
将目录更改为要提取文件的位置并运行 gunzip 进行解压缩
cd to-where-you-want-to-extract-the-files
gunzip -c path-to-external-directory/file.gz > file
tar
将目录更改为cd path-to-source-directory
要压缩的目录。
例如将一组文件压缩为一个“tarball”
tar -cvzf path-to-external-directory/file.tar.gz file1 file2 file3
或者外部驱动器上的目标分区是否有足够的空间容纳整个目录
tar -cvzf path-to-external-directory/file.tar.gz .
空格和最后的点很重要。
您可以使用以下命令“查看” tar 文件
tar -tvf path-to-external-directory/file.tar.gz
使用以下命令从 tarball 中提取压缩文件
cd to-where-you-want-to-extract-the-files
tar -xvf path-to-external-directory/file.tar.gz