Удаление файлов из bash linux с возможностью восстановления
Удаление файлов из bash linux с возможностью восстановления
Пример
Чтобы использовать данный скрипт в деле, необходимо сделать алиас для команды rm
alias rm=yourpath/newrm
Сценарий требует доработки
#!/bin/bash
archivedir="$HOME/.deleted-files"
realrm="$(which rm)"
copy="$(which cp) -R" #копировать рекрусивно
if [ $# -eq 0 ] ; then #если кол-во поз. параметров = 0, тогда вытеснить процесс командной rm
exec $realrm
fi
flags=""
while getopts "dfiPRrvW" opt #допустимые опции
do
case $opt in
f ) exec $realrm "$@" ;; #покинуть сценарий немедленно
* ) flags="$flags -$opt" ;; #сохранить опции
esac
done
shift $(( $OPTIND -1 )) #сместить
#---------------------------------------------------------------------------------
if [ ! -d $archivedir ] ; then
if [ ! -w $HOME ] ; then
echo "$0 failed: can'not created $archivedir in $HOME" >&2
exit 1;
fi
mkdir $archivedir
chmod 700 $archivedir
fi
for arg #список файлов, которые удаляются
do
newname="$archivedir/$(date "+%S.%M.%H.%d.%m").$(basename "$arg")" #создать директорию + файл
if [ -f "$arg" -o -d "$arg" ] ; then #если файл существует или каталог существуют и являются ими
$copy "$arg" "$newname" #копия файлов в newname
fi
done
exec $realrm $flags "$@" #Текущий сценарий будет вытеснен командой realrm с опциями
Источники
Последнее изменение: 10.10.2024 04:29
Связанные темы
Здесь пока нет комментариевДобавлять комментарии могут только авторизованные пользователи