... |
... |
@@ -286,37 +286,36 @@ def clean(now_date, archives, max_delete, session): |
286
|
286
|
|
287
|
287
|
for af in old_files:
|
288
|
288
|
filename = af.path
|
289
|
|
- if not os.path.exists(filename):
|
290
|
|
- Logger.log(["database referred to non-existing file", af.path])
|
|
289
|
+ try:
|
|
290
|
+ st = os.lstat(filename)
|
|
291
|
+ except FileNotFoundError:
|
|
292
|
+ Logger.log(["database referred to non-existing file", filename])
|
291
|
293
|
session.delete(af)
|
292
|
294
|
continue
|
293
|
295
|
Logger.log(["delete archive file", filename])
|
294
|
|
- if os.path.isfile(filename):
|
295
|
|
- if os.path.islink(filename):
|
296
|
|
- count += 1
|
297
|
|
- Logger.log(["delete symlink", filename])
|
298
|
|
- if not Options["No-Action"]:
|
299
|
|
- os.unlink(filename)
|
300
|
|
- else:
|
301
|
|
- size += os.stat(filename)[stat.ST_SIZE]
|
302
|
|
- count += 1
|
303
|
|
-
|
304
|
|
- dest_filename = dest + '/' + os.path.basename(filename)
|
305
|
|
- # If the destination file exists; try to find another filename to use
|
306
|
|
- if os.path.lexists(dest_filename):
|
307
|
|
- dest_filename = utils.find_next_free(dest_filename)
|
|
296
|
+ if stat.S_ISLNK(st.st_mode):
|
|
297
|
+ count += 1
|
|
298
|
+ Logger.log(["delete symlink", filename])
|
|
299
|
+ if not Options["No-Action"]:
|
|
300
|
+ os.unlink(filename)
|
|
301
|
+ session.delete(af)
|
|
302
|
+ elif stat.S_ISREG(st.st_mode):
|
|
303
|
+ size += st.st_size
|
|
304
|
+ count += 1
|
308
|
305
|
|
309
|
|
- if not Options["No-Action"]:
|
310
|
|
- if af.archive.use_morgue:
|
311
|
|
- Logger.log(["move to morgue", filename, dest_filename])
|
312
|
|
- utils.move(filename, dest_filename)
|
313
|
|
- else:
|
314
|
|
- Logger.log(["removed file", filename])
|
315
|
|
- os.unlink(filename)
|
|
306
|
+ dest_filename = dest + '/' + os.path.basename(filename)
|
|
307
|
+ # If the destination file exists; try to find another filename to use
|
|
308
|
+ if os.path.lexists(dest_filename):
|
|
309
|
+ dest_filename = utils.find_next_free(dest_filename)
|
316
|
310
|
|
317
|
311
|
if not Options["No-Action"]:
|
|
312
|
+ if af.archive.use_morgue:
|
|
313
|
+ Logger.log(["move to morgue", filename, dest_filename])
|
|
314
|
+ utils.move(filename, dest_filename)
|
|
315
|
+ else:
|
|
316
|
+ Logger.log(["removed file", filename])
|
|
317
|
+ os.unlink(filename)
|
318
|
318
|
session.delete(af)
|
319
|
|
- session.commit()
|
320
|
319
|
|
321
|
320
|
else:
|
322
|
321
|
utils.fubar("%s is neither symlink nor file?!" % (filename))
|