我有一个python3.2脚本,它应该在一切完成后删除一个文件夹:
def perforce_backup(
source,
destination,
tmp_location,
zip_tmp_loc,
):
logger.info('--------------------Perforce Backup--------------------'
)
logger.info('--- Check integrity of perforce depot (p4 verify)')
p4verify(source, 'user', 'password')
logger.info('--- Create a checkpoint (p4 admin checkpoint)')
p4checkpoint(source, 'user', 'password')
logger.info('--- Do the backup locally')
rsync(source, tmp_location)
logger.info('--- Zip perforce db and depot locally')
zipdir(tmp_location, zip_tmp_loc)
logger.info('--- Remove file from last folder on backup FTP')
shutil.rmtree(destination.path)
makedir(destination.path)
logger.info('--- Move zip to backup FTP')
cp(zip_tmp_loc.path + '/*', destination.path)
logger.info('--- Remove tmp_file locally - raw copy and archive')
shutil.rmtree(tmp_location.path)
logger.info('--- Remove tmp_file locally - raw copy and archive2')
shutil.rmtree(zip_tmp_loc.path)
logger.info('--- Remove tmp_file locally - raw copy and archive3')
当我手动运行脚本时,使用“vbackup”用户,它可以工作。我使用这种语法在我的“user”crontab中定义了一个任务(我使用“su vbackup”执行crontab -e as“vbackup”:
00 22 * * * python3.2 /opt/valibackup/main.py
当我使用上述内容时,脚本每天22:00运行。问题是,它似乎在没有所需权限的情况下运行,并且当我手动运行脚本时,shutil.rmtree()不起作用。
我尝试了以下语法,以确保它以“vbackup”权限运行,但它甚至没有启动。
*/30 * * * * vbackup python3.2 /opt/valibackup/main.py
如果我使用“sudo crontab -e”进行编辑,则rmtree可以正常工作,但rsync不会发送Permission denied错误。
有什么想法吗?
答案 0 :(得分:0)
听起来您需要成为特权用户才能删除文件夹并需要像本地用户一样运行rsync。
修改您的脚本,如下所示,然后尝试。
在删除操作之前切换到sudo用户,然后切换回普通用户。
我认为stackoverflow中的这个答案可以帮助你