压缩文件夹而不占用驱动器上的额外空间

压缩文件夹而不占用驱动器上的额外空间

我有一个 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 中gziptar可以使用。

  • rsync可以在本地或通过网络复制文件和/或目录树
  • gzip压缩单个文件
  • tar它可以创建一个包含许多文件和目录树的档案,并且如果你指定的话还可以进行压缩。

更改目录

使用以下方法更改目录

cd path-to-source-directory

到要压缩的目录。

rsync

我无法物理访问服务器。我总是通过 ssh 进行通信。我会查找 rsync。谢谢。

rsync是一款功能强大的复制工具,它具有内置检查,确保转账正确

  • 它可以在本地或通过网络复制文件和/或目录树
  • 它通常用于备份
    • 本地存储到外部驱动器或
    • 通过与服务器或服务器之间的网络连接

rsync如果连接的两端都有 Ubuntu,那么使用起来就很简单了,而且我检查过rsyncMacOS 中也有一个版本。

我喜欢以下命令行,其中选项

  • -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 中运行rsyncgzip,则tar可以使用装有 Ubuntu 的 USB 闪存盘或 DVD 磁盘启动 Mac 计算机,然后以此方式运行程序。(使用 Ubuntu 从 USB 闪存盘或 DVD 磁盘启动计算机的建议也适用于装有 Windows 的计算机。)

  • 您可以阅读内置手册man rsyncman gzipman 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

相关内容