如何使用 scp 下载文件夹中的最新文件?

如何使用 scp 下载文件夹中的最新文件?

我想运行 scp 传输将某个目录中的最新(最新)文件下载到我的本地目录。

像这样的东西:

虽然仅获取最新文件,而不是全部,以backups.

答案1

假设你有变量serverdir定义了,你可以这样做

$ dir="~"
$ server="[email protected]"
$ scp $server:$dir/$(ssh $server 'ls -t $dir | head -1') .

首先在其中查找最新文件,然后复制它。

注意:我没有检查它的万无一失(例如,最新条目是一个文件夹)

答案2

scp从某种意义上说它是愚蠢的,它只是盲目地将文件从源复制到目标。如果您想要更智能地复制文件,您需要使用诸如rsync.

$ rsync -avz [email protected]:'$(find /home/rimmer/backups/ -ctime -1)' /home/rimmer/backups/

这只会将过去一天 (-ctime -1) 中丢失或已更改的文件从 rimmer.sk 的备份目录复制到本地备份目录。

-ctime n
   File's  status  was last changed n*24 hours ago.  See the comments for 
   -atime to understand how rounding affects the interpretation of file 
   status change times.

参考

答案3

虽然有点晚了,但也许 ssh 和 rsync 的解决方案对某些人有用:

source_host="yourhost.com"
source_dir="/a/dir/on/yourhost.com/"
target_dir="/the/dir/where/last_backup/will/be/placed"
last_backup=$(ssh user@${source_host} "ls -t ${source_dir} | head -1")
if [ "${last_backup}" == "" ]; then
    echo "ERROR: didn't find a backup, cannot continue!"
else
    echo "the last backup is: ${last_backup}"
    rsync -avzh user@${source_host}:${source_dir}/${last_backup} ${target_dir}
fi

相关内容