Linux

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > Linux > nohup和--remove-source-files在后台运行rsync并记录日志

使用nohup和--remove-source-files在后台运行rsync并记录日志方式

作者:Hello.Reader

这篇文章主要介绍了使用nohup和--remove-source-files在后台运行rsync并记录日志方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

一、什么是 --remove-source-files?

与常见的 mv 命令相比,rsync --remove-source-files 更适合跨设备或跨网络的移动操作,因为它支持增量传输和错误恢复。

二、示例命令

以下是一个使用 nohup--remove-source-files 的完整命令模板:

nohup rsync -av --remove-source-files /source/path/ /destination/path/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &

让我们逐步拆解这条命令。

三、命令详解

1. nohup

2. rsync -av --remove-source-files

源路径和目标路径

3. 日志重定向

> /var/log/rsync_$(date +%Y%m%d_%H%M%S).log

2>&1:将标准错误也重定向到日志文件,确保所有信息都被记录。

4. 后台运行 &

四、使用场景与示例

场景1:本地文件移动

/data/old/ 中的文件移动到 /data/new/

nohup rsync -av --remove-source-files /data/old/ /data/new/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &

场景2:远程文件迁移

将本地文件移动到远程服务器:

nohup rsync -avz --remove-source-files -e ssh /local/data/ user@remote:/remote/data/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &

场景3:特定文件移动

只移动特定类型的文件(例如 .txt 文件):

nohup rsync -av --remove-source-files --include '*.txt' --exclude '*' /source/ /destination/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 &

五、操作步骤

准备工作

执行命令

验证结果

六、--remove-source-files 的工作原理

例如:

/source/
├── file1.txt
├── file2.txt
└── subdir/
    └── file3.txt

运行 rsync -av --remove-source-files /source/ /dest/ 后:

/source/
└── subdir/

七、注意事项

谨慎使用

磁盘空间

日志重要性

权限问题

网络中断

八、高级用法

定时任务:结合cron,每天凌晨2点移动文件:

0 2 * * * nohup rsync -av --remove-source-files /source/ /dest/ > /var/log/rsync_$(date +\%Y\%m\%d_\%H\%M\%S).log 2>&1 &

错误通知:添加失败提示:

nohup rsync -av --remove-source-files /source/ /dest/ > /var/log/rsync_$(date +%Y%m%d_%H%M%S).log 2>&1 || echo "Rsync failed" | mail -s "Error" admin@example.com &

总结

通过 nohup--remove-source-files,我们可以安全、高效地将文件从一处移动到另一处,并利用日志记录整个过程。

这一方法在数据迁移、清理旧文件等场景中尤为实用。只要注意权限、空间和备份,就能充分发挥其优势。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文