Ho provato "curlftpfs"! L'utilizzo è molto semplice
con i dati:
Codice: Seleziona tutto
host="ftp.NOME_SITO.it/"
user="MIO_USER"
pass="MIA_PASSWORD"
dir_remota_da_montare="www.NOME_SITO.it" # indirizzo relativo a quello di accesso (se diverso da quello che si vuol montare; altrimenti lasciare vuota dir_remota="")
path_locale_mount="/tmp/mount_ftp/"
creo il punto di mount se non esiste già
Codice: Seleziona tutto
[ -d "$path_locale_mount" ] || mkdir "$path_locale_mount"
per montare l'host ftp basta dare il comando
Codice: Seleziona tutto
curlftpfs -o user="${user}:${pass}" ftp://${host}${dir_remota_da_montare} "$path_locale_mount"
ora ci si può spostare nella directory di mount
con "ls" si può vedere il contenuto della directory remota montata nel punto di mount locale.
Si possono usare tutti i comandi (ls, mkdir, cp, cd, rsync, eseguire script etc...) come se fosse una risorsa locale.
Si può accedere con il terminale (più reattivo) ma anche con Nautilus, naturalmente in nessun caso si può accedere alle directory superiori alla prima directory remota montata.
Per lo smontaggio si deve essere fuori dalla directory di mount e non devono esserci operazioni in corso!
Nel caso del mio esempio prima di smontare, devo dare 'cd ..' risalendo fino ad uscire (o 'cd /tmp') per poi poter smontare la risorsa con:
Codice: Seleziona tutto
fusermount -u "$path_locale_mount" # che è uguale a digitare:# fusermount -u /tmp/mount_ftp/
Più facile a farsi che a dirsi.
Ora però,
questo sistema, per quanto ganzo,
lo vedo più adatto ad un uso interattivo che all'utilizzo da script.
Utilizzando ftp e wget per la verifica
Attenzione! Questo script non l'ho ancora provato, ho fatto solo degli echo per vedere cosa fa, dovrebbe andare bene ma non si sa mai.
ho questi dati:
Codice: Seleziona tutto
gallery="gallery_prova"
nome_file="${gallery}.html"
nome_dir=$gallery
dir_comune="comune"
host="ftp.NOME_SITO.it" # o ip
user="MIO_USER"
pass="MIA_PASSWORD"
path_remoto="/www.NOME_SITO.it/DIR1/2014/DIR2"
path_locale="/tmp/prova_ftp"
prima controllo che la dir che non voglio "riuploadare" sia presente o meno (la directory "comune" deve contenere un file index.html (anche vuoto)) con:
Codice: Seleziona tutto
if wget --spider -q http:/${path_remoto}/${dir_comune}
then
cmd_conune="mkdir $comune
lcd $dir_comune
cd $dir_comune
mput *.*
cd $path_remoto"
else
cmd_conune=""
fi
rendo corrente la cartella con il file da copiare ed eseguo i comndi ftp
Codice: Seleziona tutto
path="$(pwd)"
if [ ! "$path" = "$path_locale" ] ; then
cd "$path_locale"
fi
ftp -n -i $host <<comandi_ftp
user $user $pass
binary
bell
cd $path_remoto
put "$nome_file"
$cmd_conune
mkdir "$nome_dir"
lcd "$nome_dir"
cd "$nome_dir"
mput "*.*"
cd ..
ls
quit
comandi_ftp
Devo scappare, se qulcuno degli esperti trova qualche magagna mi faccia un fischio, grazie.