LINUX.ORG.RU

обновление архива

 , ,


0

1

Существует необходимость создать и периодически обновлять архив: для чего используется написанная функция. Проблема: при добавлении файлов в архив требуется указывать полный путь к файлам: tar -rvf arhive.tar ~/Documents/$file. По той причине, что если не указывается полный путь к файлам, то утилита tar просто не находит требуемые для добавления файлы. При этом, при таком способе архивирования, в архиве появляются папки home/user/Documents, и, соответственно, в ней размещаются добавленные файлы.

При попытке запустить tar -dif arhive.tar, выдается следующее сообщение: tar: home/user/Documents/file: Предупреждение: Функция stat завершилась с ошибкой: Нет такого файла или каталога.

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

зависит от имени внутри архива.
у тебя записался весь путь до файла от корня без начальной косой черты. о чем говорит home/user/Documents/file
т.е. чтобы отложить такой же путь tar должен работать от корня т.е. опция должна быть -C /

tar -C ~/Documents/ -dif arhive.tar
tar: home/user/Documents/file: Предупреждение: Функция stat завершилась с ошибкой: Нет такого файла или каталога

тут у тебя сложились два пути «-C» и «путь внутри архива» и получился ~/Documents/home/user/Documents/file по этому пути файла ебстебственно нет.

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 4)

а чем опция -u не устроила? Я не очень люблю формат tar (использую его только когда надо права юниксовые сохранять и то потому что альтернатив нет просто, а так пожатый tar фигня полная, т.к. его целиком надо разжимать чтоб из него какой-то один файл брать, лучше бы наоборот было сначала пожалось, потом склеилось с добавлением прав и прочей метаинформации, было бы куда производительнее, а так оно сначала склеивается потом сжимается), потому могу не знать что-то про то почему -u работает плохо у тебя

peregrine ★★★★★
()
Последнее исправление: peregrine (всего исправлений: 3)