В настоящее время я работаю над задачей архивирования старого веб-приложения. Я сделал резервные копии базы данных и самого приложения, теперь я пытаюсь создать резервную копию хранилища файлов, которое содержит все загруженные файлы.

К сожалению, указанное приложение не всегда правильно обрабатывало загруженные файлы, в результате чего на клиенте, который их загрузил, было много файлов, содержащих полный путь, например «C:\test\test.doc».

Я хочу создать tar-архив, содержащий все файлы, но tar cf выдает ошибки в файлах с двоеточием в имени. Я пытался сбежать, но не повезло.

Пример:

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

Просто смола все

[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

Используя escape-символ:

[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

Есть ли способ добиться этого (без переименования файлов)?

2 ответа2

3

. архивировать весь каталог вместо *

tar cf ../test.tar .
1

Следующее также работает (экранируйте \ внутри одинарных кавычек):

$ 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .