我需要将9000万个文件从NFS文件夹移动到第二个NFS文件夹,两个到NFS文件夹的连接都使用相同的eth0,即NFS服务器的1Gb/s,不需要Sync,只移动(如果存在则覆盖) .我认为我的主要问题是文件数量,而不是总大小.最好的方法应该是每个文件对NFS文件夹的系统调用较少的方式.
我尝试了cp,rsync,最后http://moo.nac.uci.edu/~hjm/parsync/ parsync首先花了10个小时生成12 GB gzip的文件列表,花了40个小时后没有一个文件被复制,它工作到10个线程,直到我取消它并开始调试,我发现它正在使用-vvv选项(它使用rsync)对每个文件(从列表中)再次调用(stat?):
[sender] make_file(accounts/hostingfacil/snap.2017-01-07.041721/hostingfacil/homedir/public_html/members/vendor/composer/62ebc48e/vendor/whmcs/whmcs-foundation/lib/Domains/DomainLookup/Provider.php,*,0)*
Run Code Online (Sandbox Code Playgroud)
parsync命令是:
time parsync --rsyncopts="-v -v -v" --reusecache --NP=10 --startdir=/nfsbackup/folder1/subfolder2 thefolder /nfsbackup2/folder1/subfolder2
Run Code Online (Sandbox Code Playgroud)
每个rsync都有以下形式:
rsync --bwlimit=1000000 -v -v -v -a --files-from=/root/.parsync/kds-chunk-9 /nfsbackup/folder1/subfolder2 /nfsbackup2/folder1/subfolder2
Run Code Online (Sandbox Code Playgroud)
NFS文件夹已挂载:
server:/export/folder/folder /nfsbackup2 nfs auto,noexec,noatime,nolock,bg,intr,tcp,actimeo=1800,nfsvers=3,vers=3 0 0
Run Code Online (Sandbox Code Playgroud)
知道如何指示rsync将列表中已有的文件从nfs复制到nfs2文件夹吗?或者任何有效制作此副本的方法(每个文件一个系统调用?)
我曾经遇到过同样的问题,我发现最好只运行查找命令并单独移动每个文件。
cd /origin/path
find . | cpio -updm ../destination/
Run Code Online (Sandbox Code Playgroud)
-u 命令将覆盖现有文件