【发布时间】:2013-08-08 22:27:21
【问题描述】:
我想将文件从远程服务器复制到本地服务器。问题是:我只想复制昨天的文件。 远程服务器正在写入日志文件,并且在 23:59,logrotation 将其压缩到文件 [name]_[date].log.gz。早上 6:00,本地服务器上的一个 cronjob 需要复制之前从远程服务器创建的文件。有谁知道怎么做?
问候, 亚历克斯
【问题讨论】:
我想将文件从远程服务器复制到本地服务器。问题是:我只想复制昨天的文件。 远程服务器正在写入日志文件,并且在 23:59,logrotation 将其压缩到文件 [name]_[date].log.gz。早上 6:00,本地服务器上的一个 cronjob 需要复制之前从远程服务器创建的文件。有谁知道怎么做?
问候, 亚历克斯
【问题讨论】:
你可以使用这样的脚本
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 环境来做一些测试。
【讨论】: