1111
1212DEFAULT_LIBRARY_BASENAME = os .path .basename (settings .LIBRARY_ROOT )
1313DEFAULT_MEDIA_BASENAME = os .path .basename (settings .MEDIA_ROOT )
14+ DEFAULT_REPOSITORY_BASENAME = os .path .basename (settings .REPOSITORY_ROOT )
1415
1516
1617@task (aliases = ["init" ])
@@ -48,12 +49,14 @@ def backup(ctx):
4849 archive = "{utcnow}"
4950 library = os .path .relpath (settings .LIBRARY_ROOT , share )
5051 media = os .path .relpath (settings .MEDIA_ROOT , share )
52+ repository = os .path .relpath (settings .REPOSITORY_ROOT , share )
5153 database = os .path .relpath (os .path .join (settings .BACKUP_ROOT , "latest" ), share )
5254
5355 error_msgs = []
5456 for p in (
5557 settings .LIBRARY_ROOT ,
5658 settings .MEDIA_ROOT ,
59+ settings .REPOSITORY_ROOT ,
5760 os .path .join (settings .BACKUP_ROOT , "latest" ),
5861 ):
5962 if not os .path .exists (p ):
@@ -63,44 +66,57 @@ def backup(ctx):
6366
6467 with ctx .cd (share ):
6568 ctx .run (
66- f'borg create --stats --compression lz4 { repo } ::"{ archive } " { library } { media } { database } ' ,
69+ f'borg create --stats --compression lz4 { repo } ::"{ archive } " { library } { media } { repository } { database } ' ,
6770 echo = True ,
6871 env = environment (),
6972 )
7073
7174
7275def delete_latest_uncompressed_backup (
73- src_library = DEFAULT_LIBRARY_BASENAME , src_media = DEFAULT_MEDIA_BASENAME
76+ src_library = DEFAULT_LIBRARY_BASENAME ,
77+ src_media = DEFAULT_MEDIA_BASENAME ,
78+ src_repository = DEFAULT_REPOSITORY_BASENAME ,
7479):
7580 latest_dest_library = os .path .join (settings .PREVIOUS_SHARE_ROOT , src_library )
7681 latest_dest_media = os .path .join (settings .PREVIOUS_SHARE_ROOT , src_media )
82+ latest_dest_repository = os .path .join (settings .PREVIOUS_SHARE_ROOT , src_repository )
7783
7884 shutil .rmtree (latest_dest_library , ignore_errors = True )
7985 shutil .rmtree (latest_dest_media , ignore_errors = True )
86+ shutil .rmtree (latest_dest_repository , ignore_errors = True )
8087
8188
8289def rotate_library_and_media_files (
8390 working_directory ,
8491 src_library = DEFAULT_LIBRARY_BASENAME ,
8592 src_media = DEFAULT_MEDIA_BASENAME ,
93+ src_repository = DEFAULT_REPOSITORY_BASENAME ,
8694):
8795 """
88- Rotate the current library and media files
96+ Rotate the current library, media, and repository files
8997
90- Current library and media files are moved to the '.latest' folder in case of problems during the restore process.
98+ Current library, media, and repository files are moved to the '.latest' folder in case of problems during the restore process.
9199 Files in .latest can be deleted if the restore was successful
92100 """
93- print ("rotating library and media files" )
94- delete_latest_uncompressed_backup (src_library = src_library , src_media = src_media )
101+ print ("rotating library, media, and repository files" )
102+ delete_latest_uncompressed_backup (
103+ src_library = src_library , src_media = src_media , src_repository = src_repository
104+ )
95105
96106 os .makedirs (settings .PREVIOUS_SHARE_ROOT , exist_ok = True )
97107 if os .path .exists (settings .LIBRARY_ROOT ):
98108 shutil .move (settings .LIBRARY_ROOT , settings .PREVIOUS_SHARE_ROOT )
99109 if os .path .exists (settings .MEDIA_ROOT ):
100110 shutil .move (settings .MEDIA_ROOT , settings .PREVIOUS_SHARE_ROOT )
111+ if os .path .exists (settings .REPOSITORY_ROOT ):
112+ shutil .move (settings .REPOSITORY_ROOT , settings .PREVIOUS_SHARE_ROOT )
101113
102114 shutil .move (os .path .join (working_directory , src_library ), settings .SHARE_DIR )
103115 shutil .move (os .path .join (working_directory , src_media ), settings .SHARE_DIR )
116+ # repository dir may not exist in older backups
117+ src_repository_path = os .path .join (working_directory , src_repository )
118+ if os .path .exists (src_repository_path ):
119+ shutil .move (src_repository_path , settings .SHARE_DIR )
104120
105121
106122def environment ():
0 commit comments