【问题标题】:Get multiple latest files from sftp server从 sftp 服务器获取多个最新文件
【发布时间】:2023-10-10 04:47:01
【问题描述】:

我正在尝试使用 bash shellscript 从远程服务器获取最近修改的 50 个文件。目前,我可以使用以下代码通过 sftp 获取一个文件。这个问题有什么好的解决方案?

我没有在我的服务器上存储来自远程服务器的所有文件的“副本”。所以我不相信 rsync 在这种情况下有效。

fileName=$(echo "ls -1tr" | sftp myid@removeserver | tail -1)
echo "get $fileName $local_directory" | sftp myid@removeserver

【问题讨论】:

    标签: linux bash shell ssh sftp


    【解决方案1】:

    使用当前的bashfor 循环:

    destdir="/tmp"
    
    # get last 50 file names and save in array fileName
    mapfile -t fileName < <(echo "ls -1tr" | sftp myid@removeserver | tail -50)
    
    # get files from array fileName and save in $destdir
    for f in "${fileName[@]}"; do echo "get \"$f\" \"$destdir\""; done | sftp myid@removeserver
    

    我假设文件名不包含换行符。

    【讨论】: