Oracle && OceanBase 相关文档,希望互相学习,
共同进步
1.背景
近期由于备份盘空间不够了,需要将文件切一个时间点,指定时间点之前的放在旧盘,指定时间点之后的文件放在新盘。
本文针对上述情况,实验验证。
2. 实验
2.1 准备
1)文件夹及文件准备


只有4个文件是2025年的,其中3个文件是2025-05-15, 有1个文件是 2025-05-19
本实验:抽取>=2025-05-15的文件 到指定目录,且带着文件夹。
2)相关知识
rsync,remote synchronizetion,具有可使本地和远程两台主机之间的数据快速复制同步镜像、远程备份的功能。rsync还可在本地主机的不同分区或目录之间全量及增量的复制数据。scp每次都是全量拷贝,而rsync可以增量拷贝。
rsync 命令本身不能指定同步的时间段 ,可搭配 find 命令来同步指定时间段的文件--include-from 或 --files-from 只同步部分目录
--exclude-from 不同步这些目录
rsync -av
最常用的选项,表递归模式,保留软链接、文件权限、修改时间戳、属主、属组、设备文件、特殊文件,详细显示执行过程
rsync -avu
不覆盖已修改的文件
rsync -av --delete
删除目的端存在,但远端不存在的内容。
rsync -av --existing
目的端不创建新内容,就是只同步目的端有的内容
#同步修改时间在3天内的文件rsync -avz --files-from=<(find /var/log/ -mtime -3) /usr remote:/backup
#使用 newermt 可按时间精确查找,如:
find /var/log -newermt '2023-3-18 20:00:00' ! -newermt '2023-3-18 22:00:00'
搜索:#!/bin/bash
设置时间点
TIME_POINT="2023-03-01"
使用find命令查找所有在指定时间点之后修改的文件
FILES=(find /source -type f -newermt "TIME_POINT")
使用rsync同步这些文件
rsync -av --files-from=<(echo "$FILES") /source/ /destination/
/usr/local/rsync/bin/rsync -azv --include "aa/" --include "bb/" --include "ee" --exclude "/*" --progress rsync://127.0.0.1/site /work/backup/htdocs_bak/site说明:
--include "aa/" --include "bb/" --include "ee" 包含了你要同步的目录 --exclude包含了不同步的目录所有用"/*"指定。
--exclude "/*" 除了--include同步的目录外,排除其他目录
使用rsync -aP --exclude=upload 只能排除upload文件/目录。
如果要排除多个文件/目录:建一个exclude.list,里面要排除的目录(一行一个文件/目录),然后rsync -aP --exclude-from="exclude.list"rsync -aP --exclude-from=/root/exclude.list 192.168.113.118:/web_bak/www/ /www/
(从118同步数据到本机)
补充:rsync -vau --files-from="/root/syncto.txt" --exclude-from="/root/excludefile.txt" /data/web/ root@192.168.11.12:/data/web/
用这种方式,syncto.txt 写入要同步的文件,execludefile.txt 存不需要同步的文件
2.2 实验
1)实验:找到2025-05-15之后的文件
cd /home/data
find ./555011029/ -type f -newermt '2025-05-15'|wc -l
截图: 是4个文件 没有问题

2)实验:将符合条件的文件抽取到文件中
cd /home/data/555011029
find ./ -type f -newermt '2025-05-15' >/home/data/2025after.txt
截图:

3)实验:rsync 抽取
将抽取到的文件,同步到新建的文件夹 /home/data/test/2025after/ 下,需要带层级。
mkdir -p /home/data/test/2025after/
rsync -va --files-from="/home/data/2025after.txt" /home/data/555011029 /home/data/test/2025after
截图:

4)验证
cd /home/data/test/2025after/
tree

具体查看文件的时间:也没有变化 ok

2.3 脚本验证
1)命令行执行
cd /home/data/test/
rm -rf 2025after/
mkdir 2025after
vim rsync_2025after.sh
bash
#!/bin/bash
time_point="2025-05-15"
cd /home/data/
FILES=$(find 555011029 -type f -newermt "$time_point")
echo "$FILES">/home/data/test/2025after.txt
echo "$FILES"
rsync -av --files-from=<(echo "$FILES") ./ /home/data/test/2025after/
截图:

2)脚本执行报错分析
这里发现奇怪的问题,单独执行可以,放在脚本中就不行了 ??
提示:rsync: failed to open files-from file <(echo 555011029/2025_old/05/nh-fms/49eb8f8f-c02e-4c0c-a7cc-87b67dc3594b.pdf\#012555011029/2025_old/05/nh-fms/8922038c-cbe2-4b46-a962-959c1a576404.pdf\#012555011029/2025_old/05
rsync error: syntax or usage error (code 1) at main.c(1575) [client=3.1.2]
oracle@appx-container data\]$ 根据错误信息,`rsync` 在尝试读取文件列表时遇到了语法或使用错误 避免路径中#,如果路径中必须包含 `#`,可使用 `--protect-args` 选项:防止 `#` 被误认为注释符 看到上面报错中,换行符显示为 \\`#012` `printf` 不会自动转义换行符,加上 `--protect-args 貌似也不行` 
3)修改脚本
<(echo "$FILES") 改为 "/home/data/test/2025after.txt"

ok,执行成功
4)排除文件实验
bash
vim /home/data/test/exclude.txt
555011029/2025_old/05/nh-fms/948ad48f-2fe2-4497-9c86-a8edea4d7a1f.pdf
vim /home/data/test/rsync_2025after.sh
#!/bin/bash
time_point="2025-05-15"
cd /home/data/
FILES=$(find 555011029 -type f -newermt "$time_point")
echo "$FILES">/home/data/test/2025after.txt
echo "$FILES"
#rsync -av --files-from=<(echo "$FILES") ./ /home/data/test/2025after/
#rsync -av --protect-args --files-from=<(echo "$FILES") ./ /home/data/test/2025after/
#上面有点ude-from="/root/excludefile.txt"
rsync -av --files-from="/home/data/test/2025after.txt" --exclude-from="/home/data/test/exclude.txt" ./ /home/data/test/2025after/
截图:ok 排除成功。

3.总结
FILES=(find 555011029 -type f -newermt "time_point")
#找某个时间之后修改的文件
rsync -va --files-from="/home/data/2025after.txt" --exclude-from="/root/excludefile.txt" /home/data/555011029 /home/data/test/2025after
只同步指定文件中的内容,且保持文件目录位置、修改时间不变
通过命令结合,找到想要同步的文件
实验验证:ok 
项目管理--相关知识 
项目管理-项目绩效域1/2_八大绩效域和十大管理有什么联系-CSDN博客
项目管理-计算题公式【复习】_项目管理进度计算题公式:乐观-CSDN博客
项目管理-相关知识(组织通用治理、组织通用管理、法律法规与标准规范)-CSDN博客
Oracle其他文档,希望互相学习,
共同进步
Oracle-找回误删的表数据(LogMiner 挖掘日志)_oracle日志挖掘恢复数据-CSDN博客
oracle 跟踪文件--审计日志_oracle审计日志-CSDN博客
ORA-12899报错,遇到数据表某字段长度奇怪现象:"Oracle字符型,长度50"但length查却没有50_varchar(50) oracle 超出截断-CSDN博客
