ThongCoder commited on
Commit
94c3b7b
·
verified ·
1 Parent(s): 425fb71

Create backup.py

Browse files
Files changed (1) hide show
  1. backup.py +61 -0
backup.py ADDED
@@ -0,0 +1,61 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
+ if not BACKUP_REPO or not HF_TOKEN:
10
+ print("[Backup] Skipping: BACKUP_REPO or HF_TOKEN not set")
11
+ exit(0)
12
+
13
+ def run_backup():
14
+ env = os.environ.copy()
15
+ env["HF_HOME"] = "/tmp/hf_cache"
16
+ env["XDG_CACHE_HOME"] = "/tmp/xdg_cache"
17
+ env["TMPDIR"] = "/tmp"
18
+ env["HF_TOKEN"] = HF_TOKEN
19
+
20
+ os.makedirs(env["HF_HOME"], exist_ok=True)
21
+ os.makedirs(env["XDG_CACHE_HOME"], exist_ok=True)
22
+ os.makedirs(env["TMPDIR"], exist_ok=True)
23
+
24
+ # Timestamp folder
25
+ ts = datetime.datetime.utcnow().strftime("%Y%m%d_%H%M%S")
26
+ local_path = f"/tmp/backup_{ts}.tar.gz"
27
+
28
+ # Compress home directory
29
+ subprocess.run(
30
+ ["tar", "-czf", local_path, "/home/vscode"],
31
+ check=True
32
+ )
33
+
34
+ # Upload with huggingface-cli
35
+ cmd = [
36
+ "huggingface-cli", "upload",
37
+ BACKUP_REPO,
38
+ local_path,
39
+ "--repo-type", "dataset",
40
+ ]
41
+
42
+ process = subprocess.Popen(
43
+ cmd,
44
+ stdout=subprocess.PIPE,
45
+ stderr=subprocess.STDOUT,
46
+ env=env,
47
+ text=True,
48
+ cwd="/tmp",
49
+ )
50
+
51
+ for line in iter(process.stdout.readline, ''):
52
+ print("[Backup]", line.strip())
53
+
54
+ process.wait()
55
+
56
+ while True:
57
+ try:
58
+ run_backup()
59
+ except Exception as e:
60
+ print("[Backup] Failed:", e)
61
+ time.sleep(45 * 60) # 45 minutes