本文共 1905 字,大约阅读时间需要 6 分钟。
在 Linux 系统中,tar 命令是处理文件打包与压缩的首选工具。它能够将多个文件或文件夹打包成一个大文件,并支持结合 gzip 或 bzip2 进行压缩。与 Windows 系统中的工具(如 WinRAR)不同,tar 的打包方式是将文件夹内的所有文件分别压缩,而非将多个文件整合成一个大文件。
要打包并压缩文件或文件夹,可以使用以下命令:
tar -jcv -f filename.tar.bz2 文件或文件夹
-j:选择 bzip2 作为压缩算法,生成 .tar.bz2 文件。-c:表示开始打包操作。-v:显示打包过程中的详细信息。-f:指定打包文件的名称。例如,打包 /root/etc 文件夹并压缩为 .tar.bz2 文件:
tar -jcv -f /root/etc.tar.bz2 /root/etc
要查看打包文件中的文件列表,可以使用 -tv 选项:
tar -jtv -f filename.tar.bz2
例如,查看 /root/etc.tar.bz2 文件内容:
tar -jtv -f /root/etc.tar.bz2
此时,你会看到每个文件的路径和修改时间。注意到文件名中没有根文件夹(/),这是因为 tar 会自动移除打包文件中的绝对路径,以避免解压时路径冲突。
要解压缩文件,可以使用 -x 选项。默认情况下,解压文件会在当前工作目录下创建文件夹:
tar -jxv -f filename.tar.bz2
例如,解压 /root/etc.tar.bz2 文件:
tar -jxv -f /root/etc.tar.bz2
如果希望解压文件直接位于指定文件夹中,可以使用 -C 选项:
tar -jxv -f filename.tar.bz2 -C 目标文件夹
例如,将 /root/etc.tar.bz2 解压到 /tmp 文件夹:
tar -jxv -f /root/etc.tar.bz2 -C /tmp
如果只需要解压某个特定的文件,可以在命令末尾指定该文件名:
tar -jxv -f filename.tar.bz2 文件名
例如,解压 /etc/shadow 文件:
tar -jxv -f /root/etc.tar.bz2 etc/shadow
有时你可能不希望将某个文件打包到压缩文件中,可以使用 --exclude 选项:
tar -jcv -f filename.tar.bz2 --exclude=文件或文件夹 /路径
例如,排除 /etc/passwd 文件和 /etc 文件夹:
tar -jcv -f /root/system.tar.bz2 --exclude=/etc/passwd --exclude=/etc /etc /root
要备份比特定时间更 recent 的文件,可以使用 --newer-mtime 选项:
tar -jcv -f filename.tar.bz2 --newer-mtime="时间戳" /路径
例如,备份比 /etc/passwd 新的文件(假设修改时间为 2008-09-29):
tar -jcv -f /root/etc.newer.then.passwd.tar.bz2 --newer-mtime="2008/09/29" /etc/*
在解压时,可以使用 grep 命令过滤出新文件:
tar -jtv -f /root/etc.newer.then.passwd.tar.bz2 | grep -v '/$'
*.tar。*.tar.gz(使用 gzip)。*.tar.bz2(使用 bzip2)。-f 选项必须单独放在前面,避免与其他选项混淆。-p 选项可以保留文件的权限和属性,适用于重要数据的备份。tar 会自动移除打包文件中的绝对路径,以防止解压时路径冲突。tar 命令是 Linux 系统中处理文件打包与压缩的强大工具。通过合理使用 tar 的各种选项,可以实现文件的完整备份、特定文件的解压、文件夹的打包等多种场景。熟练掌握 tar 命令,将极大提升你的系统管理效率。
转载地址:http://obkfk.baihongyu.com/