316 shutil.copy2(sourceFilename, destFilename) |
316 shutil.copy2(sourceFilename, destFilename) |
317 else: |
317 else: |
318 for sourceBasename in toAdd: |
318 for sourceBasename in toAdd: |
319 # name exists in source but not in device |
319 # name exists in source but not in device |
320 sourceFilename = os.path.join(hostDirectory, sourceBasename) |
320 sourceFilename = os.path.join(hostDirectory, sourceBasename) |
321 if deviceDirectory == "/": |
321 destFilename = ( |
322 destFilename = "/" + sourceBasename |
322 "/" + sourceBasename |
323 else: |
323 if deviceDirectory == "/" else |
324 destFilename = deviceDirectory + "/" + sourceBasename |
324 deviceDirectory + "/" + sourceBasename |
|
325 ) |
325 self.rsyncProgressMessage.emit( |
326 self.rsyncProgressMessage.emit( |
326 self.tr("{1}Adding <b>{0}</b>...") |
327 self.tr("{1}Adding <b>{0}</b>...") |
327 .format(destFilename, indentStr)) |
328 .format(destFilename, indentStr)) |
328 if os.path.isfile(sourceFilename): |
329 if os.path.isfile(sourceFilename): |
329 try: |
330 try: |
341 errors.extend(errs) |
342 errors.extend(errs) |
342 |
343 |
343 if mirror: |
344 if mirror: |
344 for destBasename in toDelete: |
345 for destBasename in toDelete: |
345 # name exists in device but not local, delete |
346 # name exists in device but not local, delete |
346 if deviceDirectory == "/": |
347 destFilename = ( |
347 destFilename = "/" + sourceBasename |
348 "/" + sourceBasename |
348 else: |
349 if deviceDirectory == "/" else |
349 destFilename = deviceDirectory + "/" + destBasename |
350 deviceDirectory + "/" + destBasename |
|
351 ) |
350 self.rsyncProgressMessage.emit( |
352 self.rsyncProgressMessage.emit( |
351 self.tr("{1}Removing <b>{0}</b>...") |
353 self.tr("{1}Removing <b>{0}</b>...") |
352 .format(destFilename, indentStr)) |
354 .format(destFilename, indentStr)) |
353 try: |
355 try: |
354 self.__commandsInterface.rmrf(destFilename, |
356 self.__commandsInterface.rmrf(destFilename, |
361 for sourceBasename in toUpdate: |
363 for sourceBasename in toUpdate: |
362 # names exist in both; do an update |
364 # names exist in both; do an update |
363 sourceStat = sourceDict[sourceBasename] |
365 sourceStat = sourceDict[sourceBasename] |
364 destStat = destinationDict[sourceBasename] |
366 destStat = destinationDict[sourceBasename] |
365 sourceFilename = os.path.join(hostDirectory, sourceBasename) |
367 sourceFilename = os.path.join(hostDirectory, sourceBasename) |
366 if deviceDirectory == "/": |
368 destFilename = ( |
367 destFilename = "/" + sourceBasename |
369 "/" + sourceBasename |
368 else: |
370 if deviceDirectory == "/" else |
369 destFilename = deviceDirectory + "/" + sourceBasename |
371 deviceDirectory + "/" + sourceBasename |
|
372 ) |
370 destMode = destStat[0] |
373 destMode = destStat[0] |
371 if os.path.isdir(sourceFilename): |
374 if os.path.isdir(sourceFilename): |
372 if stat.S_ISDIR(destMode): |
375 if stat.S_ISDIR(destMode): |
373 # both are directories => recurs |
376 # both are directories => recurs |
374 errs = self.__rsync(sourceFilename, destFilename, |
377 errs = self.__rsync(sourceFilename, destFilename, |