Potrzebuję raz dziennie będąc w pracy wykonywać kopię danych na zasób sieciowy. Napisałem coś takiego
sudo zip -r /media/BACKUP/KOPIA2$(`date+"%Y%m%d"`).ZIP /home/username/Dokumenty
Chcę to wrzucić do crontaba, ale mam kilka pytań: - po pierwsze jak odpalam to w terminalu to prosi mnie o podanie hasła root’a (wiadomo polecenie sudo), bez sudo nie pojawia się. Czy zadania to wykona się poprawnie?
zip I/O error: Permission denied
zip error: Could not create output file (/media/BACKUP/KOPIA2.ZIP)
po drugie jak poprawnie zapisać to
/media/BACKUP/KOPIA2$(date+"%Y%m%d").ZIP
aby do nazwy pliku dodawała się aktualna data. Przy podanym zapisie pojawia się
Możesz także wykonywać kopie przy użyciu wbudowanego, graficznego narzędzia - domyślnie nazwane jako “Kopia zapasowa”, ale jest to nic innego jak “Déjà Dup”.
Zasadniczo nie znam się na Ubuntu, ale akurat cron powinien być podobny we wszystkich dystrybucjach. U mnie (Centos) sprawa wygląda w ten sposób:
do pliku /etc/crontab dodaje:
05 0 * * * root /etc/cron.backup/backup_d.sh
Oznacz to, że zawsze 5 min po północy uruchomi się skrypt /etc/cron.backup/backup_d.sh z uprawnieniami roota. Zasadniczo plik /etc/crontab może edytować tylko root, więc nie ma problemu. Z kolei plik /etc/cron.backup/backup_d.sh ma następującą zawartość:
#!/bin/bash
date >> /root/log/backup
t=`date -d yesterday +%A`
cd /home/
find -mtime 1 -type f > /kopia/bup/day/list.txt
tar -cjf /kopia/bup/day/$t.tar.bz2 -T /kopia/bup/day/list.txt
echo '-----------------------------------------------' >> /root/log/backup
W Twoim przypadku zawartość powinna być z grubsza następująca (pisane z palca więc zweryfikuj):
#!/bin/bash
t=date +"%Y%m%d`
cd /home/
zip /media/BACKUP/KOPIA2$t.ZIP /home/username/Dokumenty
Czy na pewno chcesz codziennie robić kopię całych dokumentów. Wystarczy, że będziesz miał jeden większy plik i po paru tygodniach zabraknie Ci miejsca na kopie zapasowe. Może lepiej zrobić kopię przyrostową (jeśli chcesz mieć wszystkie wersję) lub co jakiś czas nadpisywać stare kopie.
Jeśli ustawisz je w crontabie jako root
Raczej taki komunikat nie wskazuje aby coś się wykonało
Zainteresuj się może synchronizacją przy pomocy rsync.
Jeśli chcesz coś w Ubuntu wykonywać z uprawnieniami roota, to wrzucasz to do crona dla roota, dokładniej.
sudo crontab -e
Wklepujesz tam swoje polecenie lub ścieżkę do skryptu bez sudo i zapisujesz zmiany. Jeśli chcesz coś wykonywać jako zwykły użytkownik i nie potrzebujesz uprawnień roota, polecenia wrzucasz do corna użytkownika.