Tar cf 无法存档名称中带有冒号的文件

Tar cf 无法存档名称中带有冒号的文件

我目前正在执行归档旧 Web 应用程序的任务。我备份了数据库和应用程序本身,现在我正尝试备份包含所有上传文件的文件存储。

不幸的是,该应用程序并不总是能正确处理上传的文件,这导致许多文件在上传的客户端上包含完整路径名,例如“C:\test\test.doc”。

我想创建一个包含所有文件的 tar 存档,但 tar cf 在文件名中含有冒号时会报错。我尝试转义,但没有成功。

一个例子:

-rw-r--r-- 1 root root 29696 Jan  3 09:43 C:\test\test.doc

只需将所有内容打包成 tar 即可:

[root@server test]# tar cf test.tar *
tar: C\:\test\test.doc: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors

用双引号括起来:

[root@server test]# tar cf test.tar "C:\\test\\test.doc"
tar: C\:\test\test.doc: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors

使用转义字符:

[root@server test]# tar cf test.tar C\:\\test\\test.doc
tar: C\:\test\test.doc: Cannot stat: No such file or directory
tar: Error exit delayed from previous errors

有没有办法实现这一点(无需文件重命名)?

答案1

用于.存档整个目录,而不是*

tar cf ../test.tar .

答案2

以下也有效(转义\里面的单引号):

$ touch 'C:\test\test.doc'
$ ls
C:\test\test.doc
$ tar cf test.tar 'C:\\test\\test.doc' 
$ tar tf test.tar 
C:\\test\\test.doc

相关内容