Как мне tar / gzip и затем безопасно удалить каталоги?

1776
Andrew Grimm

Как мне tar / gzip и как-то безопасно удалить файлы?

Предыстория : у нас недостаточно места на диске на компьютере с Ubuntu (Hardy Heron), и я хочу использовать tar / gzip, убедиться, что он работает, а затем удалить некоторые каталоги, которые я больше не использую. Я планирую сделать tar gzip для каждого каталога, от которого я избавляюсь. (Gzips будет на жесткий диск, а не на магнитную ленту)

Я нашел решение, которое должно быть безопасным, но не на unix.com . Это небезопасно, потому что в текущих версиях tar, --remove-files может удалять файлы, даже если архив не создан. (Признано как ошибка в этом письме )

Я также заметил параметр --compare, но он говорит, что он «игнорирует файлы в файловой системе, которые не имеют соответствующих членов в архиве».

Кроме того, gzipping не влияет на способность tar проверять существующие файлы?

3

2 ответа на вопрос

3
DaveParillo

Вы можете настроить rsync для --delete-afterпередачи. Он также включает в себя множество других опций - то есть вы можете вообще избежать шага tar / gzip. Используйте rsync для резервного копирования ваших материалов и удаления локальной копии. Для некоторых подробных инструкций смотрите scrounge.org и mikerubel.org и это .

Я не использую несколько компьютеров. Andrew Grimm 14 лет назад 0
rsync не требует 2 компьютеров. Вы можете определить источник и назначение для чего угодно. Местный rsync совершенно легален. DaveParillo 14 лет назад 0
1
Jonathan Leffler

Я использую этот скрипт для собственного использования:

#!/bin/ksh # # @(#)$Id: save.sh,v 2.2 2007/09/01 23:41:23 jleffler Exp $" # # Compress directories to save space  case $(id | sed 's/^uid=\([0-9][0-9]*\)(.*/\1/') in 0) echo "$(basename $0 .sh): cannot run safely as root!" 1>&2 exit 1;; esac  for d in ${*:-`pwd`} do ( set -e echo $d cd $d b=`basename $d` chmod 755 . [ ! -d Safe ] && mkdir Safe chmod 755 Safe # GNU Tar Only! find . -type f -print | grep -v '^./Safe' | tar -czf Safe/$b.tgz -T - chmod 444 Safe/$b.tgz chmod 555 Safe (set +e; rm -fr `pwd` 2>/dev/null ; exit 0) chmod 755 Safe mv Safe/* . rmdir Safe chmod 555 . ) done 

Обратите внимание, что «root» может удалять каталоги, даже если владелец не может - поэтому он не разрешает «root» запускать его. Попробуйте это на копии своего каталога, прежде чем рисковать чем-то важным. Я счастлив с этим - вы можете предпочесть что-то еще.

Однажды я заставлю его работать с 'bzip2' или другими компрессорами.