我有一台只能通过 sftp 访问的机器。没有 ssh、没有 shell、没有 rsync。当我使用 /usr/bin/sftp 获取文件时,我可以让它恢复中止的传输吗?
答案1
我使用 lftp 将我的所有照片从 NAS 自动同步到我的廉价网络服务器。如果照片发生变化,它会自动更新。
#!/bin/ash
SOURCE=/volume2/PHOTO/2011
BACKUPDIR=/foto.whatever.com/albums/2011
lftp -u username,password ftp.whatever.com << EOF
mirror -R -n -I *.jpg -I *.JPG -X @eaDir/ -X Collage/ -X ‘whatever/’ -X .piccache/ -X .recent/ -X Originals/ -X *.Db $SOURCE $BACKUPDIR
quit
答案2
您可以使用命令-a
中的选项来恢复先前中止的下载。get
sftp
例子:
echo -e "lcd ~/localFolder\nget -ar *" | sftp [email protected]:/some/path
或者写为
sftp [email protected]:/some/path <<EOF
lcd ~/localFolder
get -ar *
EOF
但是,如果连接中断,这并不会自动重新连接到服务器。lftp
是解决此问题的更好方法。
答案3
当前sftp
支持reget
恢复中途中断的下载的命令。
答案4
无密码 ssh 访问的一个命令行如下所示:
echo get -ar /file/path/file.data | sftp login@server