2016-10-05 137 views
0

我在专有的linux发行版中有一些自动下载。 他们去临时暂存盘。我想在完成主RAID阵列时移动它们。我能看到的最好办法是检查磁盘上的文件夹,看看内容是否在最后一刻发生了变化。如果不是那么它可能完成下载,然后移动它。Bash脚本根据文件大小更改移动文件夹?

假设可能有数百个文件夹或只有一个在这个位置,它的所有文件都会到同一个地方。写这个最好的方法是什么?

我能得到的文件夹大小的列表与

du -h directory/name 

的文件夹可以从任何地方1.5MB包含多个文件到10GB

Temp Loc: /volume2/4TBScratch/Processing 
Dest Loc when complete: /volume1/S/00 Landing 

编辑: 使用此:

find /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec mv "{}" "/volume1/S/00 Landing" \; 
find: `/volume2/4TBScratch/Processing/test': No such file or directory 
4.3# 

但它是否复制相关度t文件夹和所有文件。但是错误让我担心将来可能会出现问题......是因为有多个文件,它对根文件夹中的每个文件或文件夹运行相同的移动命令?但是,由于它在第一次迭代时移动了它,它无法在下一次找到它?

EDIT2: 使用rsync

4.3# find /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec rsync --remove-source-files "{}" "/volume1/S/00 Landing" \; 
skipping directory newtest 
skipping directory erw 

解决:EDIT3 在下面的意见帮助解决。最终脚本是这样的:

find /volume2/4TBScratch/Processing -mindepth 1 -type d -not -mmin +10 -exec rsync -a --remove-source-files "{}" "/volume1/S/00 Landing" \; 
find /volume2/4TBScratch/Processing -depth -type d -empty -delete 

rsync将移动文件夹和文件,但留下空的根目录 下一个命令找到空文件夹,并将其删除。

谢谢大家!

+0

要移动的文件夹的大小是多少?你想把它移动到哪个目录? – Inian

+0

更新了问题。 –

+0

因此,将临时位置中所有尺寸小于10GB的文件夹移动到实际目标位置是安全的。 – Inian

回答

1

您可以使用GNUfind的选项-size用于检测特定大小的文件/文件夹,并使用mv-exec选项移动到目标目录。语法是

find /volume2/4TBScratch/Processing -type d -maxdepth 1 -size -10G -exec mv "{}" "/volume1/S/00 Landing" \; 

使用rsync

find /volume2/4TBScratch/Processing -type d -maxdepth 1 -size -10G -exec rsync --remove-source-files "{}" "/volume1/S/00 Landing" \; 

大小与-标志,以指示比提到的尺寸,其在这种情况下是10GB以下。关于使用的每个标志的说明

  • -type d - >仅用于识别源路径中的文件夹。
  • -maxdepth 1 - >仅查看当前的源目录,而不是 正在递归。
  • -exec - >执行后面的命令。

另外,如果你想找到那些最后修改超过一定时间(分钟)文件,find-mmin一个选项,它可以设置为一个值。例如。 -mmin -5将返回五分钟前修改的文件。

所以建议将其添加到您的要求,为x因为你需要,看看目录中列出,那么你可以添加-exec选项用于移动目录

find /volume2/4TBScratch/Processing -type d -maxdepth 1 -mmin -2 -size -10G 

参考GNU文档finding files according to size如何工作。

注意: - 添加双引号("")以避免Bash拆分包含空格的名称。

+0

但问题是,如果x文件夹中的文件仍在下载,它将在完成之前移动。在移动文件夹之前,我需要确保文件夹中的所有文件或最近x秒内的子文件夹的文件大小都没有变化。 –

+0

@CarverStone:请参阅我的更新 – Inian

+0

在正确的轨道上。查看更新后的问题 –

相关问题