使用批处理/shell脚本增量备份目录

使用批处理/shell脚本增量备份目录,shell,batch-file,backup,Shell,Batch File,Backup,我正在尝试创建一个脚本,它将自动备份一个完整的目录树。我还希望它能用于增量备份。基本上,它的工作原理如下: 如果文件同时位于源和目标中,并且它们不同,则将复制源文件 如果文件同时位于源和目标中,并且它们相同,则不会复制任何内容 如果文件仅在源中,则将复制源文件 如果文件仅位于目标中,则将删除目标文件。 我还不熟悉shell脚本,不知道如何实现它。有什么想法吗?Windows批处理脚本会更好,但在Cygwin上运行的shell脚本也很好。看看rsync工具吧——它的设计目的是在文件同步期间最大

我正在尝试创建一个脚本,它将自动备份一个完整的目录树。我还希望它能用于增量备份。基本上,它的工作原理如下:

  • 如果文件同时位于源和目标中,并且它们不同,则将复制源文件
  • 如果文件同时位于源和目标中,并且它们相同,则不会复制任何内容
  • 如果文件仅在源中,则将复制源文件
  • 如果文件仅位于目标中,则将删除目标文件。

我还不熟悉shell脚本,不知道如何实现它。有什么想法吗?Windows批处理脚本会更好,但在Cygwin上运行的shell脚本也很好。

看看rsync工具吧——它的设计目的是在文件同步期间最大限度地减少通信量

此外,带“-u”参数的“cp”可能会有用:

-u、 --更新


看看rsync工具——它的设计目的是在文件同步期间最大限度地减少通信量

此外,带“-u”参数的“cp”可能会有用:

-u、 --更新


对于windows批处理脚本(windows本机)或(windows免费下载),这两种方法都非常有效

示例
xcopy
脚本(在
.bat
文件中):


它甚至支持孤立文件(如果从源文件中删除某些内容,则备份中不再需要副本)
Xcopy
通常可以满足您的需要,直到您处理NTFS和Fat32文件系统之间的同步-后者只有2秒的分辨率,并且每天节省时间,因此您偶尔会遇到以下问题:(a)在时间更改日,您可能无法获得已更改文件的备份—当然这取决于更改的规律性,或者您可能会获得所有文件的备份,即使没有更改(b)由于时间分辨率,某些文件可能会备份,即使它们没有更改。

对于windows批处理脚本(windows本机)或(在windows中免费下载)两者都非常有效

示例
xcopy
脚本(在
.bat
文件中):


它甚至支持孤立文件(如果从源文件中删除某些内容,则备份中不再需要副本)
Xcopy
通常可以满足您的需要,直到您处理NTFS和Fat32文件系统之间的同步-后者只有2秒的分辨率,并且每天节省时间,因此您偶尔会遇到以下问题:(a)在时间更改日,您可能无法获得已更改文件的备份—当然这取决于更改的规律性,或者您可能会获得所有文件的备份,即使没有更改(b)由于时间分辨率,某些文件可能会备份,即使它们没有更改。

我不想使用其他工具。我以前使用过Syncback和rsync,它们很棒,但我想知道是否有一种方法可以只使用常规批处理脚本来完成它。@LimitedImage:rsync和robocopy一样,都不是“其他工具”。但是robocopy包含在Windows中,而rsync则不是。我不需要安装任何额外的东西来做备份。我宁愿不使用其他工具。我以前使用过Syncback和rsync,它们很棒,但我想知道是否有一种方法可以只使用常规批处理脚本来完成它。@LimitedImage:rsync和robocopy一样,都不是“其他工具”。但是robocopy包含在Windows中,而rsync则不是。我不需要安装任何额外的备份。谢谢!!Robocopy做到了,我用了Robocopy/Mirro谢!!Robocopy做到了,我用了Robocopy/mir
copy only when the SOURCE file is newer than the destination file or when the destination file is missing
@echo off
:: /L = list only.
:: /v=Verify, /y=No prompting /s=subdirs /z=Network mode (supports bad)
:: /i=Tells xcopy dest is folder /f=Display names /d=Copy only changed

echo Backing up projects...
xcopy e:\projects h:\projects /V /Y /S /Z /I /F /D