愚蠢的 tar 技巧
在 Linux 系统上打包文件的最常见程序之一是古老的 tar。 tar 是 tape archive(磁带归档)的缩写,最初,它会将您的文件归档到磁带设备。 现在,您更有可能使用文件来创建归档。 要使用 tarfile,请使用命令行选项 -f
除了使用 tarfile,您还可以通过使用连字符 (-) 将 tarfile 输出到 stdout 或从 stdin 输入 tarfile。 通过这些选项,您可以使用以下命令打包一个目录及其所有子目录
tar cf archive.tar dir
然后,使用以下命令将其提取到另一个目录中
tar xf archive.tar
创建 tarfile 时,可以使用选项 -V 分配卷名
tar cf - dir1 | (cd dir2; tar xf -)
您可以更进一步,通过执行以下命令通过网络移动整个目录结构
tar cf - dir1 | ssh remote_host "( cd /path/to/dir2; tar xf - )"
GNU tar 包含一个选项,允许您跳过 cd 部分,-C /path/to/dest。 您还可以通过在 tarfile 名称中包含主机部分来通过网络与 tarfile 交互。 例如
tar cvf username@remotehost:/path/to/dest/archive.tar dir1
这是通过使用 rsh 作为通信机制来完成的。 如果您想使用其他的东西,例如 ssh,请使用命令行选项 --rsh-command CMD。 有时,您可能还需要提供远程主机上 rmt 可执行文件的路径。 在某些主机上,它不会位于默认位置 /usr/sbin/rmt。 因此,总而言之,这将如下所示
tar -c -v --rsh-command ssh --rmt-command /sbin/rmt ↪-f username@host:/path/to/dest/archive.tar dir1
虽然 tar 最初用于将其归档写入磁带驱动器,但它可用于写入任何设备。 例如,如果您想将当前文件系统的转储转储到辅助硬盘驱动器,请使用
tar -cvzf /dev/hdd /
当然,您需要以 root 身份运行上述命令。 如果您要将 tarfile 写入太小的设备,您可以告诉 tar 使用 -M 选项执行多卷归档。 对于那些足够老记得软盘的人来说,您可以通过执行以下操作将您的主目录备份到一系列软盘
tar -cvMf /dev/fd0 $HOME
如果您正在进行备份,您可能需要保留文件权限。 您可以使用 -p 选项来执行此操作。 如果您的文件系统上有符号链接文件,您可以使用 -h 选项取消引用符号链接。 这告诉 tar 实际转储符号链接指向的文件,而不仅仅是符号链接。
同样,如果您挂载了多个文件系统,您可以告诉 tar 使用选项 -l 仅坚持一个文件系统。 希望这能为您提供大量归档文件的方法的想法。