当 sudo 在 anacron 作业期间运行 rclone 时备份失败

当 sudo 在 anacron 作业期间运行 rclone 时备份失败

我创建了一个简单的备份脚本,该脚本创建所有重要文件夹的 .tar.gz 并将其上传到 Google Drive 使用克隆

当我手动运行脚本时,一切都工作得很好。但当 anacron 运行它时,它似乎失败了。

anacron -fnd经常立即运行 anacron 来测试一切是否运行正常。

以下是我在日志文件中收到的错误
2022/11/28 23:58:03 注意:未找到配置文件“/root/.config/rclone/rclone.conf” - 使用默认值
2022/11/28 23:58:03 无法为“linuxbackuprclone:Linux-Backup”创建文件系统:在配置文件中未找到部分

linuxbackuprclone 是我在 rclone 中远程的名称。
Linux-Backup 是 Google Drive 中文件夹的名称。

这是我的备份脚本,它的名字是备份, 位于/home/paramv/Bash 脚本,并命名为备份

#!/bin/bash

set -e

backupDirPath="/home/paramv/Linux-Backup" 

if [ ! -d $backupDirPath ]; then
    mkdir $backupDirPath
fi

if [ ! -d "/home/paramv/Bash-Script/Backup-Log" ]; then
    mkdir Backup-Log    
fi

# Create a log file named after the date the backup was created
logFile="/home/paramv/Bash-Script/Backup-Log/$(date).log"
logFile=${logFile// /_}
touch $logFile

# Create tar of dirs to backup
echo "Creating backup.tar.gz" >> $logFile

# sudo tar -zcf /home/paramv/Linux-Backup/backup.tar.gz -P /home/paramv/Documents/ &>> $logFile

if [ $? != 0 ]; then
    echo "Failed to create backup.tar.gz. Error code = $?" &>> $logFile
    exit 1
else
    echo "Completed creating backup.tar.gz" >> $logFile
fi 


# Upload local backup file to the cloud
echo "Uploading backup.tar.gz to Google Drive" >> $logFile

/usr/bin/rclone copy --update --transfers 30 --checkers 8 --contimeout 60s --timeout 300s --retries 3 --low-level-retries 10 "/home/paramv/Linux-Backup/backup.tar.gz" "linuxbackuprclone:Linux-Backup" &>> $logFile

if [ $? != 0 ]; then
    echo "Failed to upload backup.tar.gz to Google Drive. Error code = $?" &>> $logFile
    exit 1
else
    echo "Uploaded backup.tar.gz to Google Drive" >> $logFile
fi 

exit

以下是我的 anacron 脚本,位于/etc/cron.weekly,并命名为 prsnlbackup

#!/bin/sh

set -e

exec /home/paramv/Bash-Script/backup

exit

以下是运行的输出rclone config

Current remotes:

Name                 Type
====                 ====
linuxbackuprclone    drive

e) Edit existing remote
n) New remote
d) Delete remote
r) Rename remote
c) Copy remote
s) Set configuration password
q) Quit config
e/n/d/r/c/s/q> 

这就是我的rclone.conf好像。它位于/home/paramv/.config/rclone

[linuxbackuprclone]
type = drive
scope = drive
token = {"omitted to make it readable"}
team_drive = 

我正在运行 Ubuntu 22.04.1 LTS。
任何帮助将不胜感激。

答案1

我怀疑您正在像自己一样手动运行脚本,但是当您将脚本放入 /etc/cron.weekly/ 时,您将其设置为以 root 身份运行。

如果您想自己运行脚本,只需将其添加到您自己的 crontab 中即可。不要使用susudo

crontab -e    # Edit my own crontab
...

它是标准的六个字段,分别为分钟(0-59)、小时(0-23)、日(1-31)、月(1-12)、指数(0-6,0=Sun)。选择“星期几”值之一以确保它仅每周运行。例如,它将在每周日凌晨 2 点运行,将其输出写入backup.log主目录中的日志文件:

0 2 * * 0    Bash-Script/backup > backup.log 2>&1

答案2

解决方案是运行然后sudo -i复制rclone.conf/home/paramv/.config/rclone/root/.config/rclone

相关内容