为了避免我的CSL再次崩溃导致存档丢失,一怒之下写了一个自动备份脚本,每次游戏挂在后台即可。启动时会自动使用上次最后的备份覆盖掉本地的配置和存档,然后每隔600s备份一次(推荐备份主文件夹而非单独的存档文件夹),每隔1小时上传至对象存储。需要修改的东西:Windows用户名、对象存储的设置、备份的路径,至于打包和配置文件,下次再写吧,又不是不能用(已经手生到快忘记基础语法的地步了,许久不用导致能力大幅下降XD
import time, os, shutil from qcloud_cos import CosConfig, CosS3Client source_path = "C:\\Users\\PC用户名\\AppData\Local\\Colossal Order" backup_path = "C:\\Users\\PC用户名\\Desktop\\Backup" class cos: secret_id = 'SecretId' secret_key = 'SecretKey' region = 'ap-beijing' token = None domain = None config = CosConfig(Region=region, SecretId=secret_id, SecretKey=secret_key, Token=token, Domain=domain) client = CosS3Client(config) def recover_save(): file_list = os.listdir(backup_path) backup_file = file_list[-1] shutil.unpack_archive(backup_file, source_path) def compress_save(): local_time = time.strftime("%Y%m%d-%H%M", time.localtime(time.time())) archive_name = "Save-Backup-" + local_time archive_file = shutil.make_archive(archive_name, 'zip', source_path) shutil.copy2(archive_file, backup_path) return archive_name def upload_cos(): file_list = os.listdir(backup_path) backup_file = file_list[-1] with open(backup_file, 'rb') as fp: response = cos.client.put_object( Bucket='test04-123456789', Body=fp, Key=backup_file, StorageClass='STANDARD', ContentType='text/html; charset=utf-8' ) return response['ETag'] if __name__ == "__main__": try: recover_log = recover_save() print(f"[INFO]成功恢复存档: {recover_log}") except Exception as e: print(f"[ERROR]{e}") v = 0 while True: try: archive_name = compress_save() print(f"[INFO]成功备份存档: {archive_name}") except Exception as e: print(f"[ERROR]{e}") time.sleep(600) v += 1 if v == 6: try: upload_log = upload_cos() print(f"[INFO]成功上传存档:{upload_cos}") except Exception as e: print(f"[ERROR]{e}") v = 0
|
2025年5月18日更新:**游戏,毁我青春害我前途,我再玩我是狗