【发布时间】:2016-08-21 22:34:36
【问题描述】:
我正在尝试使用在本地服务器(服务器 A)上运行的脚本从远程服务器(服务器 B)复制特定时间范围内的一组文件。 我在 find 中使用 -newermt 选项来指定我的时间范围。 因此,如果我 ssh 到远程服务器(服务器 B),这可行:
find /appl/backup/monsters/green/y.y.y.y/2016-04-26_08-00-01/jelly/ -newermt "2016-04-26 07:40:00" \! -newermt "2016-04-26 07:50:00"
我得到指定时间的文件列表。
但是,如果我尝试通过 ssh 从本地服务器(服务器 A)调用它:
#!/bin/bash
#
CLUSTER="green"
node="x.x.x.x"
STIME="2016-04-26_08-00-01"
#T1=1461678000
#T2=1461678600
T1="2016-04-26 07:40:00"
T2="2016-04-26 07:50:00"
ssh user@y.y.y.y find /appl/backup/monsters/${CLUSTER}/${node}/${STIME}/jelly/ -newermt "$T1" \\! -newermt "$T2"
echo $latest_file
echo SCP Completed.
exit
这给了我一个查找错误:
查找:路径必须在表达式之前:07:40:00
所以看来用这个方法 find 不喜欢 "2016-04-26 07:40:00" 中的空格
我尝试转换为 unixtimestamps 以避免使用空格,但 find 不喜欢那些:
发现:我不知道如何将 `1461678000' 解释为日期或时间
我的问题是我是否必须为此或大括号分隔空格字符,我正在尝试一些事情但完全摸索:-/感谢任何帮助。
谢谢!
【问题讨论】:
-
您需要 remote 服务器而不是本地服务器看到引号。将整个
find命令用双引号括起来,并在当前有双引号的地方使用单引号。 -
就是这样,非常感谢!