这就是我最后所做的,但这不是一个简洁的解决方案。
幸运的是,我知道用户ftp,www-data,my-user,root和groups ftp,www-data,root只拥有文件。
所以,在我运行的旧机器上(在我复制的文件夹的基础上)
find . -user ftp -print > temp-user.ftp.txt
find . -user www-data -print > temp-user.www-data.txt
find . -user my-user -print > temp-user.my-user.txt
find . -user root -print > temp-user.root.txt
find . -group ftp -print > temp-group.ftp.txt
find . -group www-data -print > temp-group.www-data.txt
find . -group root -print > temp-group.root.txt
现在,例如,temp-user.ftp.txt
包含ftp用户拥有的所有文件的列表。并且temp-group.ftp.txt
是具有组ftp的所有文件的列表。例如,temp-user.ftp.txt
可能看起来像这样:
./some-file.txt
./a-directory
./a-directory/lower-level-file.mp3
使用某些编辑器,使它看起来像这样(例如,更换\n
由"\nchown *** "
并且在开始和文件的末尾手动清理了一下):
chown ftp "./some-file.txt"
chown ftp "./a-directory"
chown ftp "./a-directory/lower-level-file.mp3"
当然,在这里,改变chown ftp
以匹配文件 - temp-group.www-data.txt
会得到chgrp www-data
,等等。
我用新的服务器运行这些文件。
所以这对我有用,但是,
- 这不是一个好的解决方案,
- 它需要一些手工工作,
- 并要求您知道用户和组在目录中拥有文件的内容。