ftpsync.sh
download
#!/bin/sh
# DESCR: FTP syncing script
# AUTHOR: Dariusz Cieślak, cieslakd at gazeta.pl
#
# USAGE:
#
# ftpsync remote_dir stamp_file [files...] | pftp hostname
# touch stamp_file
#
# I know this is simple, but allows high flexibility
# A this time allows only two-level hierarchy od directories
REMOTE_DIR="$1"
STAMP="$2"
test -z "$STAMP" && {
echo $0 remote_dir stamp_file
exit 1
}
test -f $STAMP || touch $STAMP -d '1977-01-01'
find . -follow -newer $STAMP -a -type d |\
awk -vREMOTE_DIR="$REMOTE_DIR" '
BEGIN {
FS = "/"
print "mkdir " REMOTE_DIR
print "cd " REMOTE_DIR
}
$0 != "." {
print "mkdir " $0
}
'
find . -follow -newer $STAMP -a -type f |\
awk -vREMOTE_DIR="$REMOTE_DIR" '
BEGIN {
FS = "/"
}
!/\.swp/ {
if(NF > 2) {
if($2 != DIR) {
print "cd " $2
print "lcd " $2
DIR = $2
}
file=$3
} else {
if(DIR) {
print "cd .."
print "lcd .."
DIR = ""
}
file=$2
}
print "put " file
if(/cgi$/) {
print "chmod 0755 " file
}
}
'
(...)
Nie ma bowiem łatwych odpowiedzi.
Nie istnieje nic takiego jak najlepsze
rozwiązanie - zarówno jeśli chodzi o
narzędzia,
jak i języki czy systemy operacyjne. Są
jedynie systemy, które mogą być bardziej
odpowiednie w konkretnych okolicznościach.
I tu właśnie do gry wchodzi pragmatyzm.
Nie należy przywiązywać się do żadnej
określonej metody, ale mieć na tyle rozległą
wiedzę i doświadczenie, by w danej sytuacji
wybrać dobre rozwiązanie.
(...)
Andrew Hunt, David Thomas
"Pragmatyczny Programista"