以下命令按预期工作...
cp -ur /home/abc/* /mnt/windowsabc/
Run Code Online (Sandbox Code Playgroud)
rsync有什么优势吗?是否有更好的方法来保持每24小时同步备份文件夹?
ckg*_*ckg 55
rsync不一定更有效,因为它执行的文件和块的清单更加详细.该算法非常出色,但您需要了解您的问题才能知道它是否真的是最佳选择.
在一个非常大的文件系统(比如数千或数百万个文件)中,文件往往被添加但没有更新,"cp -u"可能会更有效.cp决定仅复制元数据,并且可以简单地进行复制业务.
请注意,您可能需要一些缓冲,例如使用tar而不是直接cp,具体取决于文件的大小,网络性能,其他磁盘活动等.我发现以下想法非常有用:
tar cf - . | tar xCf directory -
Run Code Online (Sandbox Code Playgroud)
元数据本身实际上可能成为非常大(集群)文件系统上的重要开销,但rsync和cp将共享此问题.
rsync似乎经常是首选工具(在通用应用程序中是我通常的默认选择),但可能有很多人盲目地使用rsync而不考虑它.
mig*_*ile 14
写入的命令将创建具有当前日期和时间戳的新目录和文件,并将您自己作为所有者.如果您是系统中唯一的用户并且每天都这样做,那么这可能并不重要.但是如果保留这些属性对您很重要,您可以使用修改命令
cp -pur /home/abc/* /mnt/windowsabc/
Run Code Online (Sandbox Code Playgroud)
-p将保留文件的所有权,时间戳和模式.这可能非常重要,具体取决于您要备份的内容.
使用rsync的替代命令是
rsync -avh /home/abc/* /mnt/windowsabc
Run Code Online (Sandbox Code Playgroud)
使用rsync,-a表示"archive",它保留了上面提到的所有属性.-v表示"详细",它只列出它在运行时对每个文件执行的操作.-z留在这里用于本地副本,但是用于压缩,如果您通过网络备份,这将有所帮助.最后,-h告诉rsync报告人类可读格式的大小,如MB,GB等.
出于好奇,我运行了一个副本来填充系统并避免在第一次运行时出现偏差,然后我在从内部SSD驱动器到USB连接的HDD的1GB文件的测试运行中计时以下.这些只是复制到空目标目录.
cp -pur : 19.5 seconds
rsync -ah : 19.6 seconds
rsync -azh : 61.5 seconds
Run Code Online (Sandbox Code Playgroud)
这两个命令似乎大致相同,虽然压缩和解压缩显然会对带宽不是瓶颈的系统造成负担.
这实际上并不是什么更有效的问题。
命令“rsync”和“cp”并不等效,并且实现不同的目标。
1- rsync 可以保留现有文件的创建时间。(使用 -a 选项)
2- rsync 将运行多进程并使用本地套接字或网络套接字进行传输。(即 fork 本身为多个进程)
3- 复制大量小文件甚至多个较大文件时,多处理和线程将增加吞吐量。
所以底线是 rsync 适用于大数据,而 cp 适用于较小的本地复制。(MB 到小 GB 范围)。当您开始使用多个 GB 或 TB 范围时,请使用 rsync。当然还有网络副本、rsync。
特别是如果使用像BTRFS或ZFS这样的写时复制文件系统,rsync效果会更好。
我使用BTRFS,并且在我的文件夹中~/.bashrc:
alias cp="rsync -ah --inplace --no-whole-file --info=progress2"
Run Code Online (Sandbox Code Playgroud)
这里奶牛FSS像BTRFS的重要标志--inplace,因为这些文件的改变部分它只复制,没有新的文件的inode之间的微小变化创造等。请参阅此。
小智 6
我更喜欢使用 rsync 和以下选项
rsync -avhW --no-compress --progress --info=progress2 <src directory> <dst directory>
Run Code Online (Sandbox Code Playgroud)
上述参数可以定义如下:
-a for the archive to preserves ownership, permissions, etc.
-v for verbose
-h for human-readable
-W for copying whole files only
--no-compress as there's no lack of bandwidth between local devices
--progress to see the progress of large files
--info=progress2 to see the overall progress
source directory path
destination directory path
Run Code Online (Sandbox Code Playgroud)
对于本地副本,rsync 的唯一优点是,如果目标目录中已存在该文件,它将避免复制。“已存在”的定义是(a)相同的文件名(b)相同的大小(c)相同的时间戳。(也许是同一个所有者/组;我不确定......)
“rsync 算法”非常适合通过慢速网络链接对文件进行增量更新,但它不会为您购买太多本地副本,因为它需要读取现有(部分)文件来运行其“diff”计算。
因此,如果您经常运行此类命令,并且更改的文件集相对于文件总数而言很小,您应该会发现 rsync 比 cp 更快。(rsync 还有一个--delete您可能会觉得有用的选项。)
| 归档时间: |
|
| 查看次数: |
83730 次 |
| 最近记录: |