复制或rsync命令

| 以下命令按预期运行...
cp -ur /home/abc/* /mnt/windowsabc/
rsync有什么优势吗?是否有更好的方法来使备份文件夹每24小时保持同步?     
已邀请:
        Rsync更好,因为它将仅复制更新文件的更新部分,而不是整个文件。如果需要,它也使用压缩和加密。查看本教程。     
        rsync由于执行的文件和块的详细清单而不一定高效。该算法的功能非常出色,但是您需要了解您的问题,以了解它是否真的是最佳选择。 在非常大的文件系统(例如成千上万个文件)上,倾向于添加文件但不更新文件,\“ cp -u \”可能会更有效。 cp决定仅在元数据上进行复制,并且可以简单地从事复制业务。 请注意,您可能需要一些缓冲,例如通过使用tar而不是直接cp,具体取决于文件的大小,网络性能,其他磁盘活动等。我发现以下想法非常有用:
tar cf - . | tar xCf directory -
元数据本身实际上可能在非常大的(群集)文件系统上成为相当大的开销,但是rsync和cp将共享此问题。 rsync似乎经常是首选工具(在通用应用程序中,这是我通常的默认选择),但是可能有很多人盲目使用rsync而不考虑它。     
        编写的命令将创建带有当前日期和时间戳的新目录和文件,您自己将成为所有者。如果您是系统上的唯一用户,并且每天都在执行此操作,则可能没有太大关系。但是,如果保留这些属性对您很重要,则可以使用以下命令修改命令
cp -pur /home/abc/* /mnt/windowsabc/
-p将保留文件的所有权,时间戳和模式。这可能非常重要,具体取决于您要备份的内容。 使用rsync的替代命令是
rsync -avh /home/abc/* /mnt/windowsabc
使用rsync时,-a表示\“ archive \”(存档),它保留了上述所有那些属性。 -v表示\“ verbose \”,它仅列出每个文件在运行时的处理方式。 -z在此处保留用于本地副本,但用于压缩,如果您通过网络进行备份,这将有所帮助。最后,-h告诉rsync以人类可读的格式(例如MB,GB等)报告大小。 出于好奇,我运行了一个副本以启动系统,并避免偏向于第一次运行,然后我将以下时间安排在从内部SSD驱动器到USB连接的HDD的1GB文件测试运行中。这些只是复制到空的目标目录。
cp -pur    : 19.5 seconds
rsync -ah  : 19.6 seconds
rsync -azh : 61.5 seconds
尽管压缩和解压缩显然会给带宽不是瓶颈的系统加重负担,但这两个命令似乎差不多。     
        特别是如果您使用像BTRFS或ZFS这样的写时复制文件系统,则
rsync
更好。 我使用BTRFS,在我的
~/.bashrc
中有这个:
alias cp=\"rsync -ah --inplace --no-whole-file --info=progress2\"
对于像BTRFS这样的CoW FS,此处的重要标志是
--inplace
,因为它仅复制文件的已更改部分,而不会为文件inode之间的微小更改创建新文件。等等。     
        对于本地副本,rsync的唯一优点是,如果目标目录中已存在该文件,它将避免复制。 \“已经存在\”的定义是(a)相同的文件名(b)相同的大小(c)相同的时间戳。 (也许是同一所有者/组;我不确定...) “ rsync算法”非常适合通过慢速网络链接进行文件的增量更新,但是对于本地副本而言,它并不会给您带来很多好处,因为它需要读取现有(部分)文件才能运行该文件\“ diff \”计算。 因此,如果您经常运行这种命令,并且更改的文件集相对于文件总数而言很小,那么您应该发现rsync比cp快。 (rsync还有一个
--delete
选项,您可能会觉得有用。)     
这并不是什么效率更高的问题。 命令\'rsync \'和\'cp \'不是等效的,可以实现不同的目标。 1- rsync可以节省创建现有文件的时间。 (使用-a选项) 2- rsync将运行多进程并使用本地套接字或网络套接字进行传输。 (即,将自身分叉到多个进程中) 3-复制大量小文件,甚至复制多个大文件时,多处理和线程处理将提高吞吐量。 因此,底线是rsync用于大型数据,而cp用于较小的本地复制。 (MB到小GB范围)。当您开始进入多个GB或TB范围时,请使用rsync。当然还有网络副本,一直都是rsync。     
        请记住,在计算机上内部传输文件(即不进行网络传输)时,使用-z标志可能会大大缩短传输时间。 在同一台机器上传输
Case 1: With -z flag:
    TAR took: 9.48345208168
    Encryption took: 2.79352903366
    CP took = 5.07273387909
    Rsync took = 30.5113282204

Case 2: Without the -z flag:
    TAR took: 10.7535531521
    Encryption took: 3.0386879921
    CP took = 4.85565590858
    Rsync took = 4.94515299797
    
        如果您使用的是cp,则在复制相同名称的文件夹时不会保存现有文件。假设您有以下文件夹:
/myFolder
  someTextFile.txt

/someOtherFolder
  /myFolder
    wellHelloThere.txt
然后您将一个复制到另一个:
cp /someOtherFolder/myFolder /myFolder
结果:
/myFolder
  wellHelloThere.txt
至少这是在macOS上发生的事情,我想保留diff文件,所以我使用了rsync。     

要回复问题请先登录注册