Elber 0 Zgłoś post Napisano Listopad 19, 2009 Witam, potrzebuje skrypt, który codziennie o 3 w nocy (ale to sobie dodam crona) będzie pakował foldery /home/virtual/*/backups/ tam gdzie * to są nazwy domen i dobrze by było aby każdy spakowany folder backups z folderu * miał taką nazwą jak * czyli np. mam /home/virtual/domena1.pl/backups/ i chce żeby zawartość backups spakowało jako aktualnadata.domena1.pl.tar.gz albo jakieś inne rozszerzenie może być i analogicznie jak mam potem /home/virtual/domena2.pl/backups/ żeby spakowało jako aktualnadata.domena2.pl.tar.gz (aktualnadata to data w formacie dd-mm-rrrr) i następnie te wszystkie pliki tar.gz wysłało mi na serwer FTP, i dobrze by było aby jeszcze z tego FTP usuwało pliki starsze niż 14 dni. Ma ktoś coś takiego, ewentualnie mógł by takie coś ktoś napisać ? Udostępnij ten post Link to postu Udostępnij na innych stronach
guziec 109 Zgłoś post Napisano Listopad 19, 2009 Witam, potrzebuje skrypt, który codziennie o 3 w nocy (ale to sobie dodam crona) będzie pakował foldery /home/virtual/*/backups/ tam gdzie * to są nazwy domen i dobrze by było aby każdy spakowany folder backups z folderu * miał taką nazwą jak * czyli np. mam /home/virtual/domena1.pl/backups/ i chce żeby zawartość backups spakowało jako aktualnadata.domena1.pl.tar.gz albo jakieś inne rozszerzenie może być i analogicznie jak mam potem /home/virtual/domena2.pl/backups/ żeby spakowało jako aktualnadata.domena2.pl.tar.gz (aktualnadata to data w formacie dd-mm-rrrr) i następnie te wszystkie pliki tar.gz wysłało mi na serwer FTP, i dobrze by było aby jeszcze z tego FTP usuwało pliki starsze niż 14 dni. Ma ktoś coś takiego, ewentualnie mógł by takie coś ktoś napisać ? Mam dzisiaj dobry dzień to ci napiszę #!/bin/bash KAT='/home/virtual' ARCH='/var/tmp' DZISIAJ=`date +%d-%m-%Y` ZDALNY='user@192.168.1.20:/var/backups' ls -1 $KAT |while read domena; do echo "archiwzowanie: $domena" ( cd $KAT/$domena/backups && tar czf ${ARCH}/${DZISIAJ}.${domena}.tar.gz . ) scp ${ARCH}/${DZISIAJ}.${domena}.tar.gz ${ZDALNY} done Wysyłanie czegokolwiek przez FTP jest moim zdaniem przeżytkiem - nie dość że niebezpieczne bo hasła jawnym tekstem lecą, to jeszcze nie da się go sensownie oskryptować. Dlatego jest przez scp bo to jedna linijka. Musisz tylko wygenerować klucz użytkownika który będzie robił kopię: ssh-keygen I przesłać klucz: ~/.ssh/id_dsa.pub to katalogu .ssh zdalnego użytkownika na zdalnym serwerze - klucz musi tam nosić nazwę authorized_keys. Wtedy możesz się logować bez hasła, więc skrypt będzie śmigać. Usuwanie starszych plików pozostawiam ci w charakterze pracy domowej. A jak koniecznie musisz to przesyłać ftp-em to zainteresuj się czymś co się nazywa "expect". http://pl.wikipedia.org/wiki/Expect Udostępnij ten post Link to postu Udostępnij na innych stronach
Elber 0 Zgłoś post Napisano Listopad 19, 2009 Mam dzisiaj dobry dzień to ci napiszę #!/bin/bash KAT='/home/virtual' ARCH='/var/tmp' DZISIAJ=`date +%d-%m-%Y` ZDALNY='user@192.168.1.20:/var/backups' ls -1 $KAT |while read domena; do echo "archiwzowanie: $domena" ( cd $KAT/$domena/backups && tar czf ${ARCH}/${DZISIAJ}.${domena}.tar.gz . ) scp ${ARCH}/${DZISIAJ}.${domena}.tar.gz ${ZDALNY} done Wysyłanie czegokolwiek przez FTP jest moim zdaniem przeżytkiem - nie dość że niebezpieczne bo hasła jawnym tekstem lecą, to jeszcze nie da się go sensownie oskryptować. Dlatego jest przez scp bo to jedna linijka. Musisz tylko wygenerować klucz użytkownika który będzie robił kopię: ssh-keygen I przesłać klucz: ~/.ssh/id_dsa.pub to katalogu .ssh zdalnego użytkownika na zdalnym serwerze - klucz musi tam nosić nazwę authorized_keys. Wtedy możesz się logować bez hasła, więc skrypt będzie śmigać. Usuwanie starszych plików pozostawiam ci w charakterze pracy domowej. A jak koniecznie musisz to przesyłać ftp-em to zainteresuj się czymś co się nazywa "expect". http://pl.wikipedia.org/wiki/Expect A jeśli to ftp to ftp backupowe do którego mama dostęp tylko za pomocą ftp z mojego serwera i login to nazwa serwera ? To jak mam skonfigurować klucz ssh ? bo jak tworze katalog .ssh na ftp i przesyłam tam plik to nic mi to nie daje Udostępnij ten post Link to postu Udostępnij na innych stronach
www.ionic.pl 535 Zgłoś post Napisano Listopad 19, 2009 http://www.ncftp.com/ncftp/doc/ncftpput.html Udostępnij ten post Link to postu Udostępnij na innych stronach
Elber 0 Zgłoś post Napisano Listopad 19, 2009 http://www.ncftp.com...c/ncftpput.html Ok dzięki poczytałem i działa pięknie Teraz mam pytanie, jak zrobić żeby od DZISIAJ=`date +%d-%m-%Y` odjęło mi 14 dni ? Udostępnij ten post Link to postu Udostępnij na innych stronach
guziec 109 Zgłoś post Napisano Listopad 20, 2009 Ok dzięki poczytałem i działa pięknie Teraz mam pytanie, jak zrobić żeby od DZISIAJ=`date +%d-%m-%Y` odjęło mi 14 dni ? #!/bin/bash # timestamp dzisiejszy TSNOW=`date -u +%s` # timestamp dwa tygodnie temu (odejmujemy 14 dni, czyli 14 * 24 * 60 * 60 sekund) let TSPAST=${TSNOW}-1209600 dzisiaj=`date -d @${TSNOW} +%d-%m-%Y` dwatygodnietemu=`date -d @${TSPAST} +%d-%m-%Y` echo -e "Dzisaj:\t\t\t$dzisiaj" echo -e "Dwa tygodnie temu:\t$dwatygodnietemu" A jeśli to ftp to ftp backupowe do którego mama dostęp tylko za pomocą ftp z mojego serwera i login to nazwa serwera ? To jak mam skonfigurować klucz ssh ? A Google użyć to ci religia nie pozwala? http://dug.net.pl/tekst/65/ssh___klucze_rsa_%28mozliwosc_logowania_bez_hasla%29/ http://www.pcworld.pl/news/116888/Logowanie.SSH.bez.hasla.html http://mizerski.com/2009/logowanie-przez-ssh-bez-podawania-hasla/ http://perfectlinux.net/sshlog.php Udostępnij ten post Link to postu Udostępnij na innych stronach
www.follownet.pl 8 Zgłoś post Napisano Listopad 20, 2009 # timestamp dwa tygodnie temu (odejmujemy 14 dni, czyli 14 * 24 * 60 * 60 sekund) let TSPAST=${TSNOW}-1209600 A nie prościej ? date +%d-%m-%Y --date="14 days ago" Domyślam się, że chodzi o tu backup w OVH. Tam jest tylko dostęp przez ftp i klucza ssh nie zainstalujesz. Udostępnij ten post Link to postu Udostępnij na innych stronach
Elber 0 Zgłoś post Napisano Listopad 24, 2009 A nie prościej ? date +%d-%m-%Y --date="14 days ago" Domyślam się, że chodzi o tu backup w OVH. Tam jest tylko dostęp przez ftp i klucza ssh nie zainstalujesz. Hmm myślałem nad czymś tego typu #!/bin/bash STARE=`date +%d-%m-%Y --date="10 days ago"` DELETE="$STARE.*" ftp -n $HOST << EOF user $USER $PASSWD delete $DELETE quit EOF ale mi wywala Could not delete 14-11-2009.*: No such file or directory mimo, że pliki z początkiem w nazwie 14-11-2009. są. Źle kombinuje ? Udostępnij ten post Link to postu Udostępnij na innych stronach
guziec 109 Zgłoś post Napisano Listopad 24, 2009 Hmm myślałem nad czymś tego typu #!/bin/bash STARE=`date +%d-%m-%Y --date="10 days ago"` DELETE="$STARE.*" ftp -n $HOST << EOF user $USER $PASSWD delete $DELETE quit EOF ale mi wywala Could not delete 14-11-2009.*: No such file or directory mimo, że pliki z początkiem w nazwie 14-11-2009. są. Źle kombinuje ? Prawie dobrze prompt mdelete $DELETE Udostępnij ten post Link to postu Udostępnij na innych stronach
Elber 0 Zgłoś post Napisano Listopad 24, 2009 Działa Dzięki A jest coś typu ncftp że pozwoli mi takie coś napisać w 1 linijce ?? Udostępnij ten post Link to postu Udostępnij na innych stronach
guziec 109 Zgłoś post Napisano Listopad 24, 2009 Działa Dzięki A jest coś typu ncftp że pozwoli mi takie coś napisać w 1 linijce ?? A po co? Udostępnij ten post Link to postu Udostępnij na innych stronach
Elber 0 Zgłoś post Napisano Listopad 24, 2009 Sam nie wiem. Teraz mój skrypt wygląda tak: #!/bin/bash KAT='/home/virtual' ARCH='/var/tmp' DZISIAJ=`date +%d-%m-%Y` STARE=`date +%d-%m-%Y --date="10 days ago"` DELETE="$STARE.*" HOST='host' USER='login' PASSWD='hasło' ls -1 $KAT |while read domena; do echo "Archiwzowanie: $domena" ( cd $KAT/$domena/backups && tar czf ${ARCH}/${DZISIAJ}.${domena}.tar.gz . ) ncftpput -u $USER -p $PASSWD -a $HOST / ${ARCH}/${DZISIAJ}.${domena}.tar.gz rm ${ARCH}/${DZISIAJ}.${domena}.tar.gz done ftp -n $HOST << EOF user $USER $PASSWD prompt mdelete $DELETE quit EOF Jest tutaj coś źle napisane albo coś poprawić ? Udostępnij ten post Link to postu Udostępnij na innych stronach