Bläddra i källkod

fix: custom_dir — écrire .info.json dans tmpdir puis sudo rsync (backup_dir est 750 root)

Cédric Hansen 1 dag sedan
förälder
incheckning
d59be324e3
1 ändrade filer med 8 tillägg och 2 borttagningar
  1. 8 2
      sources/jobs/custom_dir.py

+ 8 - 2
sources/jobs/custom_dir.py

@@ -88,7 +88,7 @@ def backup_custom_dir(job, instance, backup_dir):
             check=True,
         )
 
-        # .info.json YunoHost (hors tar, pour listing webadmin)
+        # .info.json YunoHost — écrit dans tmpdir puis copié via sudo rsync
         from jobs.utils import sudo_getsize
         size = sudo_getsize(archive_path)
         ynh_info = {
@@ -99,8 +99,14 @@ def backup_custom_dir(job, instance, backup_dir):
             "apps": {},
             "system": {},
         }
-        with open(os.path.join(backup_dir, archive_name + ".info.json"), "w") as f:
+        tmp_ynh_info = os.path.join(tmpdir, archive_name + ".info.json")
+        with open(tmp_ynh_info, "w") as f:
             json.dump(ynh_info, f, indent=2)
+        subprocess.run(
+            ["sudo", "rsync", tmp_ynh_info,
+             os.path.join(backup_dir, archive_name + ".info.json")],
+            capture_output=True,
+        )
 
     finally:
         subprocess.run(["sudo", "rm", "-rf", tmpdir], check=False)