Windows下Nextcloud文件同步备份(使用robocopy)

1.常用命令

(1)复制操作

robocopy D:\Test\Source D:\Test\Target /e /copyall

实现效果:

将Source文件夹下的内容,完整复制到Target下。

参数说明:

1)Target文件夹不存在时,会自动创建;

2)/e表示复制所有子目录包括空文件夹。

3)/copyall等于/copy:datsou,表示将所有源文件夹的信息复制到目标文件夹中,其中D:文件数据,A:文件属性,T:时间信息,S:权限信息,O:所有者信息,U:审核信息。

(2)移动操作

robocopy D:\Test\Source D:\Test\Target /move /e /copyall

实现效果:

将Source文件夹下的内容,移动到Target文件夹下(会删除Source文件夹)。

参数说明:

1)Target文件夹不存在时,会自动创建;

2)/move表示移动。

(3)文件夹监视(指定时间间隔,指定文件夹修改数)

robocopy D:\Test\Source D:\Test\Target /e /copyall /mot:1 /mon:2

实现效果:

1分钟检查一次,当文件夹修改数为2或2处以上时,执行备份操作。

参数说明:

1)Target文件夹不存在时,会自动创建;

2)/mot后接的是时间(分钟),是指Robocopy在指定分钟数后再次执行;

3)/mon后接的是最少文件修改个数,在 n 次更改后再次运行 Robocopy。

4)只有同时符合以上两个条件时,Robocopy才开始执行,执行完成后,这两个数据会自动清零,并重新开始监视文件夹,除非用户关闭命令提示符窗口或按下Ctrl+Break键。

(4)完全同步

robocopy D:\Test\Source D:\Test\Target /mir

实现效果:

同步备份,两个文件夹完全相同,即拷贝时删除在目标文件夹里存在但源文件夹里并没有的文件。

robocopy D:\Test\Source D:\Test\Target /e /copyall /w:10 /z /mt:32 /mir /mot:1 /mon:2 /log:roblog.txt

实现效果:

1分钟检查一次,当文件(夹)修改数为2或2处以上时,执行完全同步操作,即拷贝时删除在目标文件夹里存在但源文件夹里并没有的文件。

参数说明:

1)Target文件夹不存在时,会自动创建;

2)/w:10 设置每次错误时,重试的间隔秒数。

3)/z 开启断点续传;

4)/mt:32 设置并发的线程数。默认值为8。取值为1~128。

5)/mir的作用等同于/purge /e,/purge表示清理目标文件夹有而源文件夹里没有的文件(夹)。通过这个命令,能保证源文件夹和目标文件夹结构与文件完全相同。这在创建镜像备份时,非常有用。

6)/log:roblog.txt 将迁移结果写入roblog.txt日志中。如果已存在,将覆盖现有日志。(文件位于脚本文件同级目录)

7)/log+:roblog.txt 将状态添加到现有日志文件中,即追加日志。

(5)检查源文件夹和目标文件夹的一致性

robocopy D:\Test\Source D:\Test\Target /e /l /ns /njs /njh /ndl /fp /log:roblog.txt

实现效果:

迁移完后,检查目标文件系统是否与源文件系统一致。

参数说明:

1)/e:仅列出目录(包括空目录);

2)/l:不修改或复制文件,仅记录差异。

3)/fp:指在日志中包括文件的完整路径(仅在省略/ndl时有必要)。

4)/ns:指不在日志中包括文件大小。

5)/ndl:指不在日志中包括文件夹。

6)/njs:指不包括作业摘要。

7)/njh:不包括作业头。

8)/log:roblog.txt:将迁移结果写入roblog.txt日志中。如果已存在,将覆盖现有日志。

(6)指定时间段内执行

robocopy D:\Test\Source D:\Test\Target /e /copyall /rh:0130-0530

实现效果:

凌晨1点半时开始备份,5点半暂停。

参数说明:

1)Target文件夹不存在时,会自动创建;

2)RH格式为/RH:hhmm-hhmm,指定Robocopy开始的时间段,在这个时间段外,拷贝会被暂停。时间为24小时格式,4个数字长,从0000到2359,而且两个数字不能相同。

(7)其他用到的命令

1)查找指定名称的进程:

tasklist|findstr "Robocopy"

2)终止指定进程名的进程:

taskkill /f /im “Robocopy.exe”

3)终止指定pid的进程:

taskkill /pid {pid}

强制终止进程:

taskkill /f /pid 19960

2.文件同步备份

(1)开启Nextcloud备份

创建“开启Nextcloud备份.bat”文件,复制以下内容:

@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit
cd /d "%~dp0"

:: 源文件夹
set SOURCE_PATH="D:\Test\Source"

:: 目标文件夹
set TARGET_PATH="D:\Test\Target"

:: 日志文件路径
set LOG_PATH="D:\Test\roblog.txt"

:: 并发备份的线程数,默认值为8。取值为1~128
set THREAD_NUM=32

:: 执行同步检查的时间间隔,单位分钟
set MOT_MINUTE=1

:: 文件(夹)在 MON_NUM 次更改后再次运行 Robocopy
set MON_NUM=2

:: 设置每次错误时,重试的间隔秒数
set ERROR_SECOND=10

robocopy %SOURCE_PATH% %TARGET_PATH% /e /copyall /w:%ERROR_SECOND% /z /mt:%THREAD_NUM% /mir /mot:%MOT_SECOND%  /mon:%MON_NUM%  /log:%LOG_PATH%

(2)终止Nextcloud备份

创建“终止Nextcloud备份.bat”文件,复制以下内容:

@echo off
%1 mshta vbscript:CreateObject("Shell.Application").ShellExecute("cmd.exe","/c %~s0 ::","","runas",0)(window.close)&&exit
cd /d "%~dp0"
taskkill /f /im "Robocopy.exe"

升阶版脚本见另一篇博文:

https://blog.csdn.net/yinshengchen/article/details/128662348

Nextcloud私有云搭建问题,可私信联系。

你可能感兴趣的:(分享类,windows,bat,robocopy,同步,备份)