ThongCoding commited on
Commit
7023f44
·
verified ·
1 Parent(s): 2126d64

Create backup.py

Browse files
Files changed (1) hide show
  1. backup.py +63 -0
backup.py ADDED
@@ -0,0 +1,63 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
2
+ import time
3
+ import subprocess
4
+ import datetime
5
+
6
+ BACKUP_REPO = os.environ.get("BACKUP_REPO")
7
+ HF_TOKEN = os.environ.get("HF_TOKEN")
8
+
9
+ def run_backup():
10
+ env = os.environ.copy()
11
+ env["HF_HOME"] = "/tmp/hf_cache"
12
+ env["XDG_CACHE_HOME"] = "/tmp/xdg_cache"
13
+ env["TMPDIR"] = "/tmp"
14
+ env["HF_TOKEN"] = HF_TOKEN
15
+
16
+ os.makedirs(env["HF_HOME"], exist_ok=True)
17
+ os.makedirs(env["XDG_CACHE_HOME"], exist_ok=True)
18
+ os.makedirs(env["TMPDIR"], exist_ok=True)
19
+
20
+ local_path = "/home/vscode/workspace"
21
+
22
+ # --- STEP 1: Delete old files ---
23
+ print("[Backup] Deleting old files...")
24
+ cmd = [
25
+ "hf", "repo-files", "delete", BACKUP_REPO, "workspace/",
26
+ "--repo-type", "dataset",
27
+ ]
28
+ process = subprocess.Popen(
29
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
30
+ env=env, text=True, cwd="/tmp"
31
+ )
32
+ for line in iter(process.stdout.readline, ""):
33
+ print("[Backup]", line.strip())
34
+ process.wait()
35
+
36
+ # --- STEP 2: Upload new backup ---
37
+ print("[Backup] Uploading workspace...")
38
+ cmd = [
39
+ "hf", "upload", BACKUP_REPO, local_path, "workspace/",
40
+ "--repo-type", "dataset",
41
+ ]
42
+ process = subprocess.Popen(
43
+ cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
44
+ env=env, text=True, cwd="/tmp"
45
+ )
46
+ for line in iter(process.stdout.readline, ""):
47
+ print("[Backup]", line.strip())
48
+ process.wait()
49
+
50
+ print("[Backup] Completed at", datetime.datetime.utcnow().isoformat(), "UTC")
51
+
52
+ if __name__ == "__main__":
53
+ if not BACKUP_REPO or not HF_TOKEN:
54
+ print("[Backup] BACKUP_REPO or HF_TOKEN not set! Please set it in your Spaces secrets to use the Backup Service.")
55
+ exit(0)
56
+
57
+ while True:
58
+ print("[Backup] Backup started.")
59
+ try:
60
+ run_backup()
61
+ except Exception as e:
62
+ print("[Backup] Failed:", e)
63
+ time.sleep(45 * 60) # 45 minutes