remove orphan directories with --remove-orphan
This commit is contained in:
parent
5f3e4bdde7
commit
a27ea4dfe6
1 changed files with 10 additions and 2 deletions
|
@ -24,9 +24,10 @@ import urllib, os, hashlib
|
||||||
from urllib.parse import urlparse
|
from urllib.parse import urlparse
|
||||||
from http.client import HTTPConnection, _CS_IDLE, HTTPException
|
from http.client import HTTPConnection, _CS_IDLE, HTTPException
|
||||||
from os import listdir
|
from os import listdir
|
||||||
from os.path import isfile, join
|
from os.path import isfile, isdir, join
|
||||||
import re
|
import re
|
||||||
import argparse
|
import argparse
|
||||||
|
import shutil
|
||||||
|
|
||||||
#################################################################################################################################
|
#################################################################################################################################
|
||||||
class HTTPGetCallback:
|
class HTTPGetCallback:
|
||||||
|
@ -247,6 +248,7 @@ class TerraSync:
|
||||||
def handleDirindexFile(self, dirindexFile):
|
def handleDirindexFile(self, dirindexFile):
|
||||||
dirIndex = DirIndex(dirindexFile)
|
dirIndex = DirIndex(dirindexFile)
|
||||||
serverFiles = []
|
serverFiles = []
|
||||||
|
serverDirs = []
|
||||||
|
|
||||||
for file in dirIndex.getFiles():
|
for file in dirIndex.getFiles():
|
||||||
f = file['name']
|
f = file['name']
|
||||||
|
@ -258,14 +260,20 @@ class TerraSync:
|
||||||
d = subdir['name']
|
d = subdir['name']
|
||||||
h = subdir['hash']
|
h = subdir['hash']
|
||||||
self.updateDirectory( "/" + dirIndex.getPath() + "/" + d, join(dirIndex.getPath(),d), h )
|
self.updateDirectory( "/" + dirIndex.getPath() + "/" + d, join(dirIndex.getPath(),d), h )
|
||||||
|
serverDirs.append(d)
|
||||||
|
|
||||||
if self.removeOrphan:
|
if self.removeOrphan:
|
||||||
localFullPath = join(self.target, dirIndex.getPath())
|
localFullPath = join(self.target, dirIndex.getPath())
|
||||||
localFiles = [f for f in listdir(localFullPath) if isfile(join(localFullPath, f))]
|
localFiles = [f for f in listdir(localFullPath) if isfile(join(localFullPath, f))]
|
||||||
for f in localFiles:
|
for f in localFiles:
|
||||||
if f != ".dirindex" and not f in serverFiles:
|
if f != ".dirindex" and not f in serverFiles:
|
||||||
#print("removing orphan", join(localFullPath,f) )
|
#print("removing orphan file", join(localFullPath,f) )
|
||||||
os.remove( join(localFullPath,f) )
|
os.remove( join(localFullPath,f) )
|
||||||
|
localDirs = [f for f in listdir(localFullPath) if isdir(join(localFullPath, f))]
|
||||||
|
for f in localDirs:
|
||||||
|
if not f in serverDirs:
|
||||||
|
#print ("removing orphan dir",f)
|
||||||
|
shutil.rmtree( join(localFullPath,f) )
|
||||||
|
|
||||||
|
|
||||||
def isReady(self):
|
def isReady(self):
|
||||||
|
|
Loading…
Add table
Reference in a new issue