我在Linux中使用的命令逻辑如下。使用"昨天"one_answers"昨天之前"获取带有创建日期的文件列表,并重命名它们并通过scp传输。文件名应该像<lt<YYYYMMDD_creation_date_of_that_filename>gt>_filename。
例如
- 获取输出
ls -lrth --time-style=+"%Y%m%d" | egrep "
日期-d"1天前"+%Y%m%d'|
日期-d"2天前"+%Y%m%d'" > tmp.txt
-rw-rw-rw- 1 user user 418K 20211225 log.897.gz
-rw-rw-rw- 1 user user 419K 20211225 log.898.gz
-rw-rw-rw- 1 user user 419K 20211225 log.899.gz
重命名。这将以相同文件的创建时间重命名为后缀
for f in tmp.txt|awk '{print$7}'; do cp "$f" "$(stat -c %Y "$f" | date +%Y%m%d)_$f"; done
一次性传输所有这些文件
for i in list_of_file_from_above; do scp $i user@server.com:/target/folder;done
我陷入了困境。每次我都要输入scp的密码请帮忙。"焦油";选项也可以考虑。
您似乎有两个问题是关键的阻碍因素。
- 如何按日期筛选文件
- 如何在没有密码的情况下使用ssh
对于第一个问题,请使用find。这里有一条很好的线索,但这并不能让你到达终点。请注意,上限是独占的,因此我将其设置为当前日期而不是昨天。
find . -type f -newermt $(date +%Y%m%d --date "2 days ago") ! -newermt $(date +%Y%m%d)
对于第二个问题,您将希望使用SSH密钥。ssh-keygen的文档有很好的例子,而且很容易阅读。简而言之,您将:
- 创建一个公钥/私钥对
- 将公钥复制到服务器(ssh命令的目标机器(
- 并使用-i选项在scp命令中指定私钥的位置
提示:由于您希望在自动应用程序中使用密钥,请不要输入密钥密码。如果你的密钥被泄露,这是一个风险,所以要小心。