我目前正在执行归档旧 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