Как постараться не перезаписывать существующие файлы при использовании команды tar?

FWIW, я использую хинду Linux. IT может быть разработан для того, что, или везде, где Вы хотите, чтобы он был. Если у меня был нетбук, я поместил пользовательскую хинду установку на него. Это заняло бы время, все же.

3
05.06.2013, 11:45
6 ответов

Добавьте это к Вашему .bash_login файл. alias tar=tar --backup=simple Это добавит ~ в файл, который он собирается перезаписать.

Таким образом, при создании архива, он будет всегда работать

tar --backup=simple zcvf foo.tex foo.bib

и после выполнения foo.tex ~ будет существовать (это - фактический tex файл, и архив будет в в foo.tex),

2
27.01.2020, 21:20
  • 1
    Спасибо, это - точно ответ, в котором я нуждаюсь. (Почему я не обнаружил - резервная опция при поиске страницы справочника...). Другой вопрос: что делает УПРАВЛЕНИЕ в средней странице справочника, каковы некоторые другие опции CONTROL кроме 'простого' в Вашем ответе? –  bigeast 05.06.2013, 12:44
  • 2
    @bigeast вместо простого, альтернатива является числом iirc. –  sparticvs 05.06.2013, 15:31
  • 3
    @sparticvs я попробовал "tar - backup=simple" в моем Терминале (удар) и получил ошибку "tar: Опция - backup=simple не поддерживается". Что такое "число iirc"? (Уровень новичка здесь. Просто запущенное изучение с помощью оболочек). –  politicus 06.12.2017, 17:36
  • 4
    @bigeast я не мог найти его в страницах справочника также. –  politicus 06.12.2017, 17:39
  • 5
    @politicus iirc =, если я помню правильно. Другая альтернатива tar --backup=simple tar --backup=numbered который пронумерует резервные копии последовательно. –  sparticvs 24.01.2018, 22:41

Используйте перенаправление вывода вместо того, чтобы указать имя файла. Это относится ко многим командам, не просто tar.

Конечно, Вы имеете set -o noclobber (также записанный set -C) в Вашем .bashrc, право?

$ tar zc >foo.tex foo.bib
bash: foo.tex: cannot overwrite existing file

Если Вы часто даете эту команду, не вводите ее вручную: запишите make-файл.

foo.tar.gz: foo.tex foo.bib
        tar czf $@ $^

Используйте tarballs только, когда необходимо будет отправить их кому-то еще, для не создания резервных копий. Вместо того, чтобы делать резервные копии старых версий, используйте управление версиями (CVS, Подвижный, Мерзавец, и т.д., безотносительно плаваний Ваша лодка). (Действительно создайте резервную копию репозитория в случае, если Ваши дисковые сбои или Вы случайно искажаете или стираете репозиторий.)

1
27.01.2020, 21:20
  • 1
    , который я не услышал о 'noclobber' опции прежде, но теперь я нахожу, что это полезно. И спасибо за Ваши другие советы. –  bigeast 05.06.2013, 12:54

Эта проблема происходит, потому что 'короткие' опции для tar позволяют Вам комбинировать вещи способом, который запутывает это foo.tex принадлежит f опция.

Полная версия Вашей команды (с современной версией tar) был бы:

tar --create --file foo.tex --gzip --verbose foo.big

или с сокращенными опциями:

tar -c -f foo.tex -z -v foo.big

Оба это, по моему опыту, путь, более очевидно, неправильно пишущий в файл foo.tex.

Если Вы сделали бы:

tar --create --file --gzip --verbose foo.tex foo.big

Вы получаете файл --gzip, и это - что-то, что я надеюсь, что Вы регулярно не используете в качестве имени файла, так, чтобы перезапись не была проблемой. (BTW можно удалить файл с таким именем файла с rm -- --gzip.)

Параметры символа для tar без - более старый/исходный путь состоит в том, чтобы указать опции. Динозавры Unix, как я, склонны использовать их, но я думаю, что они сбивают с толку. Я рекомендую использовать более полные 'штриховые' версии отдельно, пока Вы не чувствуете себя больше уверенно с помощью tar.

1
27.01.2020, 21:20

Вы могли бы предпочесть поведение 7z (С 7 zip). Я не мог заставить это перезаписывать существующий файл при сжатии. Это поддерживает вывод tar (-t tar).

Существует также atool - я попробовал его, и UI выглядит хорошим:

apack a b
apack: a: format not known, identifying using file
apack: a: format is `tar'
apack: a: refusing to overwrite existing file
0
27.01.2020, 21:20

Сначала довольно легко помнить правильные символы:

  • czf = создайте заархивированный файл
  • xzf = извлеките заархивированный файл

Если Вы думаете этот путь, необходимо всегда разбираться в нем.

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

0
27.01.2020, 21:20

Я не уверен, почему Вы даете то же имя файла как свой источник к шару tar.

если исходный файл foo.tex, это должно быть заархивировано затем, необходимо сделать следующее:

tar zcvf foo.tgz foo.tex

если существуют mulitple файлы, затем делают следующее

 tar zcvf foo.tgz foo.tex foo.bib 

при попытке сделать, возрастающий шар tar затем использует эту ссылку. Я еще не попробовал его, но я думаю, лучше использовать мерзавца, при попытке сделать управление версиями.

0
27.01.2020, 21:20
  • 1
    Вот почему я мой tex исходный файл перезаписываюсь gziped файлом более позднего файла нагрудника. –  bigeast 05.06.2013, 12:56

Теги

Похожие вопросы