gpt4 book ai didi

linux - 同步后 Rsync 脚本不继续

转载 作者:太空宇宙 更新时间:2023-11-04 10:46:59 30 4
gpt4 key购买 nike

问题:我有一个简单的自定义备份脚本,设置为在检测到我的备份驱动器时运行,这是通过 udev 完成的。一切都很好,直到脚本执行到一半时它似乎在 rsync 命令之后挂起。我的代码如下:

#!/bin/bash

#Mount the Backup Drive
wall "backup is starting"
mount -U f91b8373-6349-4de3-86e1-6a2557f2c3f7 /media/backupdrive

#Get updated package-list
mv /media/backupdrive/package-selections /media/backupdrive/package-selections.old
dpkg --get-selections >/media/backupdrive/package-selections
wall "pacakge list updated"

#Run Backup
mv /home/user/backup/rsync.log /home/user/backup/rsync.log.old
rsync --log-file=/media/backupdrive/backup/rsync.log -ravzX --delete --exclude /var/tmp --exclude /var/lock --exclude /var/run /home /etc /var /usr /media/backupdrive/backup
wall "rsync complete"

#Sync changes to disk and unmount
sync
cp /media/backupdrive/backup/rsync.log /home/user/backup/rsync.log
umount /media/backupdrive
wall "Backup is complete, the logfile can be viewed at /home/user/backup/rsync.log"

问题:我在这里做错了什么,为什么脚本在 rsync 之后没有继续?

PS - wall 命令对脚本来说并不重要,我将它们放在不同的位置进行故障排除,是的,我是新手:)

编辑 - 我曾尝试删除类似问题中提到的“z”选项,但这没有任何区别

最佳答案

这就像 udev 中的 RUN 命令超时。无需直接从 udev 运行备份脚本(通常需要很长时间才能完成),您可以从单独的进程运行它,由 udev 激活。

例如你可以使用at命令:

ACTION=="add", KERNEL=="sd*", ENV{ID_FS_UUID_ENC}=="f91b8373-6349-4de3-86e1-6a2557f2c3f7", RUN+="/home/steve/backup/backup_at.sh"

backup_at.sh:

#!/bin/sh
echo /home/steve/backup/backup.sh | at now

或者你可以尝试在后台运行它:

ACTION=="add", KERNEL=="sd*", ENV{ID_FS_UUID_ENC}=="f91b8373-6349-4de3-86e1-6a2557f2c3f7", RUN+="/home/steve/backup/backup.sh &"

但我不检查这个方法。

来自 http://lists.freedesktop.org/archives/systemd-devel/2012-November/007390.html :

It's completely wrong to launch any long running task from a udev rule and you should expect that it will be killed. If you need to launch a process from a udev rule, use ENV{SYSTEMD_WANTS} to activate a service.

关于linux - 同步后 Rsync 脚本不继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32740238/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com