Spaces:
Sleeping
Sleeping
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
|