Linux Rsync帮助

Linux Rsync帮助,linux,ubuntu,rsync,Linux,Ubuntu,Rsync,好吧,SoF,这有点难以解释,但我会尽力的 我有两个相同的驱动器。让我们调用“s:”作为源,调用“D:”作为目标 S:是我保存所有文件(图像、音乐、视频、文档等)的驱动器,D:是我每个周日晚上(手动)备份的高清硬盘 我想做的是,用一些规则将S:备份到d: 就像我说的,我每周备份一次。这意味着在一周中,文件会被添加、删除并从一个文件夹移动到另一个文件夹 仅复制新文件或已修改的文件(需要检查文件的metada) 在备份结束时,D:必须与S:相同 这意味着,如果我将文件从文件夹“a”移动到S:中的文件

好吧,SoF,这有点难以解释,但我会尽力的

我有两个相同的驱动器。让我们调用“s:”作为源,调用“D:”作为目标

S:是我保存所有文件(图像、音乐、视频、文档等)的驱动器,D:是我每个周日晚上(手动)备份的高清硬盘

我想做的是,用一些规则将S:备份到d:

就像我说的,我每周备份一次。这意味着在一周中,文件会被添加、删除并从一个文件夹移动到另一个文件夹

  • 仅复制新文件或已修改的文件(需要检查文件的metada)

  • 在备份结束时,D:必须与S:相同

  • 这意味着,如果我将文件从文件夹“a”移动到S:中的文件夹“B”,则背面将看到该文件不再位于文件夹“a”中,并且必须将其删除,以使该文件夹与S:相同

    步骤2可能解释得不好。,因此这里有一个更好的解释。这就是我计划在rsync做不到的情况下做的事情

    在python中,我将创建一个执行以下操作的脚本(按顺序):

  • 将D:与S:进行比较:-脚本将首先遍历D:。每次进入目录时,它都会查看S:中的同一目录。然后查看文件。如果文件位于D:但不在S:中,则表示该文件已在S:中被删除、重命名或移动。因此,从D中删除该文件:(对所有文件夹重复此过程)

  • 现在,D:具有完全相同的文件(如果在上面的步骤中删除了这些文件,则会减少),开始复制。首先检查S:中的当前文件是否存在于D:中,如果不存在,则复制。如果有,请检查元数据。如果已修改,请复制并覆盖


  • 抱歉,如果我解释得不太清楚,现在是凌晨4:15,坦率地说,我已经厌倦了手动删除所有D:并从s:=/

    复制文件,我想您正在寻找
    --archive
    开关以及
    --delete
    rsync
    。也就是说,如果我正确地假设您的描述是“我希望在运行备份后,D:具有与S:相同的内容,而不必首先删除D:上的所有内容”


    我还假设,虽然您正在使用Windows表示法来表示驱动器号,但实际上并没有使用Windows。

    我认为您正在寻找
    --archive
    开关以及
    --delete
    rsync
    。也就是说,如果我正确地假设您的描述是“我希望在运行备份后,D:具有与S:相同的内容,而不必首先删除D:上的所有内容”


    我还假设,虽然您正在使用Windows表示法来表示驱动器号,但实际上并没有使用Windows。

    以下是我编写的一个脚本,用于将linux机器备份到USB驱动器

    #!/bin/sh
    
    rsync -a \
      --progress \
      --hard-links \
      --whole-file \
      --delete \
      --delete-after \
      --delete-excluded \
      --stats \
      --filter='- *.log' \
      --filter='- /dev' \
      --filter='- /boot' \
      --filter='- /media/' \
      --filter='- /mnt' \
      --filter='- /net' \
      --filter='- /proc' \
      --filter='- /tmp/' \
      --filter='- /var/log/' \
      / /media/disk/middle-earth
    
    --filter行排除我不想同步的文件/子目录


    您可以将此作为自己制作的起点。

    以下是我编写的一个脚本,用于将linux机器备份到USB驱动器

    #!/bin/sh
    
    rsync -a \
      --progress \
      --hard-links \
      --whole-file \
      --delete \
      --delete-after \
      --delete-excluded \
      --stats \
      --filter='- *.log' \
      --filter='- /dev' \
      --filter='- /boot' \
      --filter='- /media/' \
      --filter='- /mnt' \
      --filter='- /net' \
      --filter='- /proc' \
      --filter='- /tmp/' \
      --filter='- /var/log/' \
      / /media/disk/middle-earth
    
    --filter行排除我不想同步的文件/子目录


    你可以以此为出发点来打造自己的产品。

    我是,我不是。这些驱动程序是NTFS,但上面没有操作系统。严格要求保存文件。我通过ubuntu和windows访问它们。谢谢你的回答,我会调查——存档和删除——我是,我不是。这些驱动程序是NTFS,但上面没有操作系统。严格要求保存文件。我通过ubuntu和windows访问它们。谢谢你的回答,我会查一下档案,然后删除,谢谢。我忘了提到有一个目录我不想备份。谢谢。我忘了提到有一个目录我不想备份。