File size: 1,439 Bytes
94c3b7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d6e32a0
94c3b7b
 
 
 
 
77b58ba
94c3b7b
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
import os
import time
import subprocess
import datetime

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

if not BACKUP_REPO or not HF_TOKEN:
    print("[Backup] Skipping: BACKUP_REPO or HF_TOKEN not set")
    exit(0)

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)

    # Timestamp folder
    ts = datetime.datetime.utcnow().strftime("%Y%m%d_%H%M%S")
    local_path = f"/tmp/backup_{ts}.tar.gz"

    # Compress home directory
    subprocess.run(
        ["tar", "-czf", local_path, "/home/vscode/workspace"],
        check=True
    )

    # Upload with huggingface-cli
    cmd = [
        "hf", "upload",
        BACKUP_REPO,
        local_path,
        "--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()

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