【问题标题】:scp files from yesterday昨天的scp文件
【发布时间】:2013-08-08 22:27:21
【问题描述】:

我想将文件从远程服务器复制到本地服务器。问题是:我只想复制昨天的文件。 远程服务器正在写入日志文件,并且在 23:59,logrotation 将其压缩到文件 [name]_[date].log.gz。早上 6:00,本地服务器上的一个 cronjob 需要复制之前从远程服务器创建的文件。有谁知道怎么做?

问候, 亚历克斯

【问题讨论】:

    标签: linux unix scp


    【解决方案1】:

    你可以使用这样的脚本

    for i in `find /interface/outbound/Web -type f -ctime -1`
    do
    scp $i user@$destination_server:/destination_directory/
    done
    

    特别是命令 find 具有以下功能,例如:

    find . -ctime -1 # which are created less than 1 day ago from currrent folder.
    find . -ctime +2 # finds files which are created older than 2 days from currrent folder.
    

    其中ctime 是创建时间。也可以这样使用修改时间mtime

    find . -mtime 0   # find files modified between now and 1 day ago
    find . -mtime -1  # find files modified less than 1 day ago
    find . -mtime 1   # find files modified between 24 and 48 hours ago
    find . -mtime +1  # find files modified more than 48 hours ago
    

    更多信息在man find

    编辑:

    要从远程到本地具有相同的行为,您可以使用以下内容:

    latest_file=`ssh user@destination_server find /pathtoDir -type f -ctime -1`
    /usr/bin/scp user@destination_server:$latest_file /local_dir 
    echo SCP Completed.
    

    目前我还没有 Unix 环境来做一些测试。

    【讨论】:

    • 您好,感谢您的回答。您正在本地服务器上测试文件。我需要在远程服务器上找到昨天的文件。 localServer(运行脚本的地方)应该从 remoteServer 获取昨天的文件。
    • 如果此解决方案适合您,请不要忘记为正确答案投票
    • 自 2013 年(本回答时间)以来,出现了诸如 BashFAQshellcheck.net 之类的网站,这些网站有助于分析潜在问题。因此,对此答案的一个小更新可能会派上用场。在这里我要指出Looping over list of files
    猜你喜欢
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    相关资源
    最近更新 更多