anacron 작업 중에 sudo로 rclone을 실행하면 백업이 실패합니다.

anacron 작업 중에 sudo로 rclone을 실행하면 백업이 실패합니다.

모든 중요한 폴더의 .tar.gz를 생성하고 이를 Google 드라이브에 업로드하는 간단한 백업 스크립트를 만들었습니다.클론.

스크립트를 수동으로 실행하면 모든 것이 잘 작동합니다. 그러나 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 드라이브에 있는 폴더의 이름입니다.

이것은 내 백업 스크립트이며 이름은 다음과 같습니다.지원, 누워/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/에 넣으면 루트로 실행되도록 설정하고 있습니다.

스크립트를 직접 실행하려면 자신의 crontab에 추가하면 됩니다. su또는 를 사용하지 마십시오 sudo.

crontab -e    # Edit my own crontab
...

여기에는 분(0-59), 시간(0-23), 일(1-31), 월(1-12) 및 지수(0-6,0=일) 등 6개의 표준 필드가 있습니다. 매주만 실행되도록 하려면 "요일" 값 중 하나를 선택하세요. 예를 들어 매주 일요일 오전 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

관련 정보