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

Ric*_*uez 14 shell ssh file-copy

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

像这样的东西:

  • 来源root@rimmer.sk:/home/rimmer/backups/
  • 目的地/home/rimmer/backups/

backups.

Ber*_*ard 16

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

$ dir="~"
$ server="user@server.com"
$ scp $server:$dir/$(ssh $server 'ls -t $dir | head -1') .
Run Code Online (Sandbox Code Playgroud)

你首先在那里寻找最新的文件,然后复制它。

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


slm*_*slm 4

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

$ rsync -avz root@rimmer.sk:'$(find /home/rimmer/backups/ -ctime -1)' /home/rimmer/backups/
Run Code Online (Sandbox Code Playgroud)

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

$ rsync -avz root@rimmer.sk:'$(find /home/rimmer/backups/ -ctime -1)' /home/rimmer/backups/
Run Code Online (Sandbox Code Playgroud)

参考

  • @slm:我认为这个问题本身就没有问题。我只想下载目录中的最新文件。我还能解释什么吗?:) (2认同)