$ cat ./ftp.borzole.net.sh
#!/bin/bash # synchronizacja z ftp://borzole.net HOST="borzole.net" USER="borzole" PASS="123tajne" LOCAL="${HOME}/studio/${HOST}" # lokalny korzeń mkdir -p "$LOCAL" LCD="$LOCAL/$2" # folder lokalny RCD="/$2" # folder zdalny MIRROR='mirror' MIRROR+=' --verbose' MIRROR+=' --exclude-glob ".ftpquota"' # ignorowany plik MIRROR+=' --exclude-glob "mediawiki/"' # ignorowany folder transfer(){ lftp -c "set ftp:list-options -a; open ftp://$USER:$PASS@$HOST; $* " } case $1 in ls) transfer "cd $RCD ; ls" ;; pull) transfer $MIRROR "$RCD" "$LCD" ;; push) transfer $MIRROR --reverse --delete "$LCD" "$RCD" ;; *) echo -e "Użycie:\n\t${0##*/} {ls|pull|push} doc/php" >&2 ;; esacO szczegółach jak to działa i co można dopisać proszę poczytać w
man lftp
Wyjście z przykładowej sesji:
$ ftp.borzole.net.sh Użycie: ftp.borzole.net.sh {ls|pull|push} doc/phpsprawdzam co jest na koncie
$ ftp.borzole.net.sh ls drwx------ 7 330 330 2048 Oct 12 11:53 . drwx------ 7 330 330 2048 Oct 12 11:53 .. -rw------- 1 330 330 14 Oct 12 12:37 .ftpquota -rw-r--r-- 1 330 330 154 Jul 22 2009 .php.ini drwxr-xr-x 2 330 330 2048 Oct 12 11:52 MySQLadmin drwxr-xr-x 2 330 330 2048 Oct 12 11:52 PgSQLadmin drwxr-xr-x 2 330 330 2048 Oct 12 11:47 borzole drwxr-xr-x 4 330 330 2048 Oct 12 11:52 doc -rw-r--r-- 1 330 330 385 Mar 2 2010 index.php drwxr-xr-x 9 330 330 2048 Oct 12 12:22 mediawikipobieram całość
$ ftp.borzole.net.sh pullalbo tylko wybrany folder
$ ftp.borzole.net.sh pull doc/phpPo wykonaniu modyfikacji mogę wysłać/zsynchronizować folder w drugą stronę
Uwaga! to polecenie usunie na zdalnym serwerze wszystkie pliki, których nie ma lokalnie.
Z tego powodu zalecam dwa razy się zastanowić, zanim coś wypchniemy na serwer.
$ ftp.borzole.net.sh push doc/phpDobra, to czemu to jest lepsze niż np. FileZilla? Bo mogę połączyć to z inotify (fsniper, inotify-tools, incron) i mieć automatyczną synchronizację folderu podobnie jak to robi Dropbox. Używam do tego fsniper z prostą regułką:
$ cat ~/.config/fsniper/config
watch { ~/studio/borzole.net/doc { recurse = true * { handler = /path/to/script/ftp.borzole.net.sh push doc } } }
Brak komentarzy:
Prześlij komentarz