Резервное копирование на файловом сервере

Чтобы не наводи бардак на школьном сервере, попросил каждого пользователя вовремя чистить свою папку. Надолго этого не хватило. Бардак навели за неделю. Решил данный процесс автоматизировать. Для этого написал небольшой скрипт, который будет чистить общую папку ежедневно.

Но все же иногда кое-какая информация более нигде не сохранена, как только на сервере и её удаление приведет в неизбежным потерям. Для этого я решил проводить перед очисткой папки её резервное копирование. Все эти функции должен выполнить один скрипт.

#!/bin/bash
cd /home/user/Files
SRCD="users/"
TGTD="/home/user/arhiv/"
OF=backup-$(date +%Y%m%d).tar.gz
tar -czvf $TGTD$OF $SRCD
ls users > /home/user/arhiv/ls-la.txt
cd /home/user/arhiv
tr ' ' '-' < ls-la.txt > ls.txt
cd /home/user/Files
rm -rf users
mkdir users
cd users
cat /home/user/arhiv/ls.txt | while read line
do
mkdir $line
done
cd /home/user/arhiv
rm ls-la.txt
rm ls.txt

Теперь разберем скрипт по строчкам

  • cd /home/user/Files — идем в расшаренную папку;
  • SRCD=»users/» — папка, которую необходимо вначале спрятать в архив, а затем удалить;
  • TGTD=»/home/user/arhiv/» — путь до папки-архива;
  • OF=backup-$(date +%Y%m%d).tar.gz — имя архива с датой его создания;
  • tar -czvf $TGTD$OF $SRCD — архивирование общей папки;
  • ls users > /home/user/arhiv/ls-la.txt — сохраняем список каталогов, находящихся в папке users;
  • cd /home/user/arhiv — переходим в папку, где будет лежать архив расшаренной папки;
  • tr ‘ ‘ ‘-‘ < ls-la.txt > ls.txt — так как многие пользователи обзывают свои папки с набором всяких символов, то мы заменим все пробелы в этих именах на тире;
  • cd /home/user/Files — опять идем в расшаренную папку;
  • rm -rf users — удаляем общую папку;
  • mkdir users — и создаем сразу новую папку;
  • cd users — переходим в созданную папку;
  • cat /home/user/arhiv/ls.txt | while read line do — читаем построчно фай с названием каталогов;
  • mkdir $line done — и создаем новые каталоги пользователям;
  • cd /home/user/arhiv — опять идем в папку с архивом;
  • rm ls-la.txt и rm ls.txt — удаляем лишнии файлы

Добавить комментарий