tar 命令归档隐藏文件的正确姿势
2024-03-16 05:41:28
揭秘点文件:使用 tar 归档中的方法
在数据处理中,我们经常需要使用 tar 命令来进行归档操作。然而,一个常见的挑战是:tar 在默认情况下会忽略隐藏文件(以点号开头的文件),如 .svn。这可能会导致不完整的归档,影响数据恢复或部署过程。
tar 的默认行为
tar 命令的默认行为是仅归档可见文件,即不以点号开头的文件。因此,如果不采取特殊措施,使用以下命令:
tar -czf workspace.tar.gz *
只会打包当前目录中可见的文件,忽略所有隐藏文件。
包含隐藏文件的方法
为了明确包含隐藏文件,我们可以使用以下标志之一:
- -a, --dereference :除了常规文件外,还归档符号链接指向的文件。此标志也会导致归档隐藏文件。
- -A, --same-order :按照目录中的顺序归档文件。此标志也会导致归档隐藏文件。
修改后的命令如下:
tar -czf workspace.tar.gz -a *
这将打包当前目录中的所有文件,包括隐藏文件。
另一种方法是使用特殊目录名 . 来表示当前目录。这将显式地将当前目录及其所有内容(包括隐藏文件)包括在归档中:
tar -czf workspace.tar.gz .
处理归档 . 导致的错误
当使用 . 作为归档源时,你可能会遇到以下错误:
tar: ./workspace.tar.gz: file changed as we read it
此错误是由于在归档过程中修改了当前目录的内容。为了解决这个问题,我们可以使用以下标志之一:
- -c, --create :创建一个新的归档文件。
- -r, --append :将文件添加到现有的归档文件中。
修改后的命令如下:
tar -czf workspace.tar.gz -c .
这将创建一个新归档文件 workspace.tar.gz,并包含当前目录中的所有文件,包括隐藏文件,而不会出现错误。
结论
通过使用 -a、-A 或 . 标志,我们可以确保 tar 命令捕获所有文件,包括隐藏文件。这对于创建完整归档至关重要,这些归档可以准确反映源目录的内容。通过理解 tar 的默认行为以及如何使用这些标志,我们可以有效地管理归档中的隐藏文件。
常见问题解答
-
为什么 tar 默认忽略隐藏文件?
为了避免在归档中包含不必要的配置或临时文件。 -
除了上述标志之外,还有其他方法可以包含隐藏文件吗?
使用 --exclude 选项排除其他文件,然后使用 --include 选项显式包含隐藏文件。 -
如何避免 tar: ./workspace.tar.gz: file changed as we read it 错误?
使用 -c 或 -r 标志创建或附加到新归档文件。 -
我可以在不归档隐藏文件的情况下,仅查看 tar 归档中的隐藏文件吗?
使用 -t --wildcards -v --exclude='.' 命令。 -
如何从 tar 归档中提取隐藏文件?
使用 -xvf 选项,并添加 --wildcards -v --exclude='.' 标志。