我希望在同一文件系统中从共享目录(“源”)到处理目录中的mv
个非常大的视频文件(高达TB的10s GB),以及成批的视频文件。 (“目标”)并最终存储。这些文件来自我们网络上的各种来源,但通常由执行任务的用户(www-data
)对该文件没有自动的写权限。
源目录和目标目录都在RAID上,我正在运行Ubuntu 16.04,将来可能会在Mac上运行。
我有(在Ubuntu上):
www-data
。 mask
设置为对创建的任何文件授予rwx
chown
chgrp
的来源和目标是www-data
我知道:
我可以使用cp --no-preserve=all
我可以使用rsync [...] chmod=ugo+rwx [...]
每次有需要转移的物品时,我都可以sudo chmod
但是这里的重点是要避免复制这些大文件。这些脚本主要在Web应用程序之后运行(因此www-data
用户)。 mv
似乎没有办法在移动文件时更改文件的权限(我知道为什么您希望将其作为默认行为),但是我是否应该探索其他方法?
该Web应用程序位于python中(使用Flask),有没有我可能看不到的Python方法(os.chmod()
被拒绝权限)?
谢谢!
编辑:
这是源目录上的getfacl
:
# file: raid_share/
# owner: root
# group: www-data
# flags: ss-
user::rwx
group::rwx
mask::rwx
other::rwx
default:user::rwx
default:user:myuser:rwx
default:group::rwx
default:group:www-data:rwx
default:mask::rwx
default:other::rwx
在getfacl
上是SFTP发送的目录(用户将文件发布到服务器的一种合理方式)到服务器的源目录:
# file: test_05034/
# owner: myuser
# group: www-data
# flags: -s-
user::rwx
user:myuser:rwx #effective:r-x
group::rwx #effective:r-x
group:www-data:rwx #effective:r-x
mask::r-x
other::r-x
default:user::rwx
default:user:myuser:rwx
default:group::rwx
default:group:www-data:rwx
default:mask::rwx
default:other::rwx
然后在该目录中的文件上getfacl
:
# file: test_05034_r1.mov
# owner: myuser
# group: www-data
user::rw-
user:myuser:rwx #effective:rw-
group::rwx #effective:rw-
group:www-data:rwx #effective:rw-
mask::rw-
other::rw-
我的大脑快要融化了...
答案 0 :(得分:0)
如果我正确地理解了您的问题和详细信息,那么您似乎真的希望在将其直接移至目的地时确保它们具有WRITE访问权限。
假设这是正确的,而不仅仅是移动文件,那么移动和设置可写该怎么办?喜欢:
$ chmod 664 "$file"
$ mv "$file" new folder/.