- --delete 以源文件为主,源文件传输数据到目标目录,目标目录以镜像形式保存源文件数据。如,目标目录里有源数据以外的内容将会被删除(多则删除,少则补上)。目标目录的内容和源目录的内容保持一致。
- 4-10.8 内容
通过 rsync -a --delete 学习镜像形式的备份。 - 操作步骤:
1、新建一个 backups_delete 用作备份目录
[root@localhost ~]# ls
test
[root@localhost ~]# cd test
[root@localhost test]# mkdir backups_delete ## 新建 backups_delete 备份目录
[root@localhost test]#
[root@localhost test]# tree ## 目录结构
.
├── backups_delete ## 新建的 backups_delete 备份目录
└── SRC
├── directory
│ └── file2.txt
└── file1.txt
3 directories, 2 files
2、执行 rsync -a --delete 把 SRC 目录下的内容传输到 backups_delete 目录,backups_delete 以镜像形式保存 SRC 目录的内容。backups_delete 目录的内容和 SRC 目录的内容保持一致。
[root@localhost test]# rsync -a --delete SRC/ backups_delete/
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_delete ## backups_delete 目录已备份了 SRC 目录的文件
│ ├── directory
│ │ └── file2.txt
│ └── file1.txt
└── SRC
├── directory
│ └── file2.txt
└── file1.txt
3、第 2 点通过 -a --delete 完成了 SRC 目录文件的备份,可能没有突显镜像备份的形式。现在 backups_delete 增加一些内容,然后用 -a --delete 再传输一次数据作一个对比就会清晰了。
backups_delete 目录下新增两个目录 directory1 和 directory2,directory1目录新增一个 file3.txt 文件,directory2目录新增一个 file4.txt 文件。操作 和 目录结构如下:
## backups_delete 目录下新增两个目录 directory1 和 directory2
[root@localhost test]# mkdir backups_delete/directory1
[root@localhost test]# mkdir backups_delete/directory2
## directory1目录新增一个 file3.txt 文件,directory2目录新增一个 file4.txt 文件
[root@localhost test]# touch backups_delete/directory1/file3.txt
[root@localhost test]# touch backups_delete/directory2/file4.txt
[root@localhost test]#
[root@localhost test]# tree ## 目录结构如下
.
├── backups_delete
│ ├── directory ## SRC 目录备份内容
│ │ └── file2.txt
│ ├── directory1 ## 新增的内容
│ │ └── file3.txt
│ ├── directory2 ## 新增的内容
│ │ └── file4.txt
│ └── file1.txt ## SRC 目录备份内容
└── SRC
├── directory
│ └── file2.txt
└── file1.txt
6 directories, 6 files
[root@localhost test]#
-a --delete 再传输一次数据,可以发现刚才新建的目录和文件都被删除了,backups_delete 目录只保存和 SRC 源目录一致的内容。形成一个 SRC 目录内容的镜像。
[root@localhost test]# rsync -a --delete SRC/ backups_delete/
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_delete
│ ├── directory
│ │ └── file2.txt
│ └── file1.txt
└── SRC
├── directory
│ └── file2.txt
└── file1.txt
4 directories, 4 files
4、同理,把 backups_delete 的 file1.txt 文件删除,再用 -a --delete 再传输一次数据。
## 删除 backups_delete 的 file1.txt 文件
[root@localhost test]# rm -rf backups_delete/file1.txt
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_delete ## 缺少了 file1.txt 文件
│ └── directory
│ └── file2.txt
└── SRC
├── directory
│ └── file2.txt
└── file1.txt
4 directories, 3 files
## -a --delete 完成了 SRC 目录文件的备份
[root@localhost test]# rsync -a --delete SRC/ backups_delete/
[root@localhost test]#
[root@localhost test]# tree
.
├── backups_delete
│ ├── directory ## 缺少的 file1.txt 文件已经补上
│ │ └── file2.txt
│ └── file1.txt
└── SRC
├── directory
│ └── file2.txt
└── file1.txt
4 directories, 4 files
[root@localhost test]#
由上述实验可以看出 --delete 作用于接收端,把目标目标以镜像模式备份源目录的数据。目标目录比源目标多出的内容将会被删除。对比源目录,比源目录少的内容会补上。
网友评论