Mi chiedo se è possibile eseguire i getfile con sftp, ma impedirgli di scaricare nuovamente i file già esistenti nella cartella di destinazione?
Mi chiedo se è possibile eseguire i getfile con sftp, ma impedirgli di scaricare nuovamente i file già esistenti nella cartella di destinazione?
Risposte:
sftpha capacità limitate. Tuttavia, il getcomando ha un'opzione che può fare il trucco: get -acompleta i download parziali, quindi se un file è già presente sul client ed è grande almeno quanto il file sul server, non verrà scaricato. Se il file è presente ma più breve, la fine del file verrà trasferita, il che ha senso se il file locale è il prodotto di un download interrotto.
Il modo più semplice per eseguire operazioni complesse su SFTP è utilizzare SSHFS . SSHFS è un filesystem che utilizza SFTP per far apparire un filesystem remoto come un file system locale. Sul client, SSHFS richiede FUSE , che è disponibile sulla maggior parte dei moderni unices. Sul server, SSHFS richiede SFTP; se il server consente SFTP, è possibile utilizzare SSHFS con esso.
mkdir server
sshfs server.example.com:/ server
rsync -a server/remote/path /local/path/
fusermount -u server
Nota che rsync su SSHFS non può sfruttare l'algoritmo di trasferimento delta, perché non è in grado di calcolare checksum parziali sul lato remoto. È irrilevante per un download una tantum, ma è inutile se stai sincronizzando i file che sono stati modificati. Per una sincronizzazione efficiente dei file modificati, utilizzare rsync -a server:/remote/path /local/path/, ma ciò richiede l'accesso alla shell SSH, non solo l'accesso SFTP. Tuttavia, l'accesso alla shell può essere limitato al comando rsync.
Puoi usare il -aflag per il getcomando:
$ sftp example.com
sftp> get -a hello.txt
Puoi specificare *di scaricare l'intera directory ovviamente.
Tuttavia, ci sono alcuni avvertimenti.
Un'opzione migliore sarebbe usare rsync:
rsync example.com:hello.txt
Questo ti darà sempre il file così com'è sul server, trasferendo le differenze tra la copia locale e quella remota solo se diverse, ed è universalmente disponibile.