【问题标题】:Modify permission of a moved file in unix修改unix中移动文件的权限
【发布时间】:2015-04-04 15:36:58
【问题描述】:

我正在将文件从我的服务器存储区移动到 NAS(网络附加存储)。 移动命令在我的脚本中并且每天执行。如:-

find . \ -mtime +0 -exec mv {} target \ ;

据我所知,上面的命令应该在 24 小时到 48 小时之间移动最后修改的文件。默认情况下,移动的文件获得 64 的权限。现在我想将这些移动文件的权限更改为 644。请注意,文件从服务器移动到 NAS。我在脚本中添加了以下命令

find target \ -mtime 0 -exec chmod 644 {}  \ ;

请注意上面命令中的 0 而不是 +0。但这似乎不起作用。是不是因为到期 -mtime +0 表示上次修改的时间是 24 小时和 48 小时,并且在文件从服务器移动到 NAS 时会保留。在这种情况下,我将提供的适当的 mtime 值是多少。我知道一个简单的出路可能是将其设置为 mtime -3 ,这将修改所有修改时间少于 72 hrs 的文件的权限。但我不希望这个命令在所有 3 天的移动文件上运行,而只是在一个通过我的命令移动的文件上运行 find . \ -mtime +0 -exec mv {} target \ ;

【问题讨论】:

  • 您只希望find 文件吗?添加-type f 更安全。

标签: unix find chmod


【解决方案1】:

我不明白反斜杠。
您的查找会将所有文件复制到一个目标文件夹。
当您对此感到满意时(并且在所有目录中都具有写入权限),您可以这样做

find . -mtime +0 -exec chmod 644 {} \; -exec mv {} target \;

您可以更好地控制简单的目录/文件(没有空格/其他特殊字符)

find . -mtime +0 | while read file; do
   filename=${file##*}
   mv ${file} ${target}
   chmod 644 ${target}/${filename}
done

【讨论】:

  • 我更关心的是复制文件和移动文件时 mtime 的差异或影响。你的意思是当一个文件被移动时,他们的权限被保留了?在那种情况下,你是有道理的..但我们不能像我一样简单地这样做。
  • 除特殊位(setguid,..)外,其他权限均被保留。我不想玩时间(NAS是否有相同的时区?同步?)。最重要的是,我只想使用一次find。我没有测试你的解决方案。
  • 找到 . -mtime +0 -exec chmod 644 {} \; -exec mv {} 目标 \;可能不是最好的方法,因为它会尝试更改所有早于 24 小时的文件的权限,并且会重复。我想应该找到更合适的解决方案。 -mtime -2 -exec chmod 644 {} \; -exec mv {} 目标 \;这确保 chmod 仅在不到 48 小时内修改的文件被执行,因此不会每天对 48 小时之前移动到那里的文件重复操作。
猜你喜欢
  • 2016-05-16
  • 2011-06-12
  • 2018-02-14
  • 2012-11-20
  • 2012-03-06
  • 2015-02-14
  • 2013-02-23
  • 2018-08-10
  • 2014-10-01
相关资源
最近更新 更多