BASH 脚本根据日期复制文件,有一个问题

问题描述 投票:0回答:3

让我解释一下树结构:我有一个网络目录,我们的数据库每天都会复制几次新的 .txt 文件。这些文件位于基于用户名的目录中。在本地磁盘上,我具有相同的结构(基于用户名的目录),并且需要使用最新的 .txt 文件进行更新。这不是同步过程:我将远程文件复制到本地目标,我不关心此后会发生什么,所以我不需要保持它同步。但是,我确实需要仅复制新文件,而不是我已经复制的文件。它看起来像:

远程磁盘

/mnt/远程/数据库
+ 用户1/
+ 用户2/
+ 用户3/
+ 用户4/

本地盘

/var/数据库
+ 用户1/
+ 用户2/
+ 用户3/
+ 用户4/

我和

一起玩
find /mnt/remote/database/ -type f -mtime +1

和其他变体,但效果不是很好。

所以,我想弄清楚的脚本如下:
1-递归检查/mnt/remote/database中的*.txt
2-检查文件日期以查看它们是否是新的(自上次检查以来,也许维护一个文本文件,并以上次检查的时间作为参考?)
3-如果文件是新的,请将其复制到 /var/database 中的正确目标(因此 /mnt/remote/database/user1/somefile.txt 将复制到 /var/database/user1/)

我将通过 cron 作业运行脚本。

我现在正在用 C 语言做这件事,但是 IT 人员不太擅长调试或编写 C 语言,如果他们需要添加或修复某些东西,他们可以更好地处理 bash 脚本,而我不太擅长。

有什么想法吗?

谢谢你!

bash date file copy
3个回答
3
投票

您可以考虑在输入和输出目录之间使用本地 rsync。它具有您想要的所有选项,使其同步策略非常灵活。


1
投票
find /mnt/remote/database/ -type f -newer $TIMESTAMP_FILE | xargs $CP_COMMAND
touch $TIMESTAMP_FILE

1
投票
© www.soinside.com 2019 - 2024. All rights reserved.