File size: 1,919 Bytes
94c3b7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
584b1a1
 
 
 
94c3b7b
584b1a1
dec48a6
 
 
584b1a1
 
dec48a6
584b1a1
dec48a6
a06aff6
584b1a1
 
 
dec48a6
584b1a1
94c3b7b
 
 
584b1a1
 
94c3b7b
584b1a1
 
 
 
 
94c3b7b
584b1a1
a3d5a33
 
 
 
476d0f6
584b1a1
476d0f6
 
 
 
584b1a1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
import os
import time
import subprocess
import datetime

BACKUP_REPO = os.environ.get("BACKUP_REPO")
HF_TOKEN = os.environ.get("HF_TOKEN")

def run_backup():
    env = os.environ.copy()
    env["HF_HOME"] = "/tmp/hf_cache"
    env["XDG_CACHE_HOME"] = "/tmp/xdg_cache"
    env["TMPDIR"] = "/tmp"
    env["HF_TOKEN"] = HF_TOKEN

    os.makedirs(env["HF_HOME"], exist_ok=True)
    os.makedirs(env["XDG_CACHE_HOME"], exist_ok=True)
    os.makedirs(env["TMPDIR"], exist_ok=True)

    local_path = "/home/vscode/workspace"

    # --- STEP 1: Delete old files ---
    print("[Backup] Deleting old files...")
    cmd = [
        "hf", "repo-files", "delete", BACKUP_REPO, "workspace/",
        "--repo-type", "dataset",
    ]
    process = subprocess.Popen(
        cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
        env=env, text=True, cwd="/tmp"
    )
    for line in iter(process.stdout.readline, ""):
        print("[Backup]", line.strip())
    process.wait()

    # --- STEP 2: Upload new backup ---
    print("[Backup] Uploading workspace...")
    cmd = [
        "hf", "upload", BACKUP_REPO, local_path, "workspace/",
        "--repo-type", "dataset",
    ]
    process = subprocess.Popen(
        cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
        env=env, text=True, cwd="/tmp"
    )
    for line in iter(process.stdout.readline, ""):
        print("[Backup]", line.strip())
    process.wait()

    print("[Backup] Completed at", datetime.datetime.utcnow().isoformat(), "UTC")

if __name__ == "__main__":
    if not BACKUP_REPO or not HF_TOKEN:
        print("[Backup] BACKUP_REPO or HF_TOKEN not set! Please set it in your Spaces secrets to use the Backup Service.")
        exit(0)

    while True:
        print("[Backup] Backup started.")
        try:
            run_backup()
        except Exception as e:
            print("[Backup] Failed:", e)
        time.sleep(45 * 60)  # 45 minutes