A więc krótkie podsumowanie:
for src_dir in [x[0] for x in os.walk(src)]:
if "\\" in src_dir:
param, value = src_dir.split("\\",1)
dest_dir = dst + "\\" + value
else:
dest_dir = dst + "\\"
if not os.path.exists(dest_dir):
print "creating new folder " + dest_dir
os.makedirs(dest_dir)
Dobra. Wszystkie potrzebne foldery zrobione jeśli nie były.
Czas na wybranie wszystkich ścieżek plików.
result_src = [y for x in os.walk(src) for y in glob(os.path.join(x[0], '*'))]
A teraz jeśli jest to zmodyfikowany albo nowy plik to go kopiujemy. Reszty plików nie ruszamy, żeby nie kopiować bezsensownie istniejących już plików.
for src_file in result_src:
param, value = src_file.split("\\",1)
dest_file = dst + "\\" + value
if os.path.isfile(dest_file):
if os.stat(src_file).st_mtime - os.stat(dest_file).st_mtime > 1:
print "coping modified file " + src_file
shutil.copy2(src_file, dest_file)
else:
if os.path.isfile(src_file):
print "coping new file " + src_file
shutil.copyfile(src_file, dest_file)
No to mamy to wszystko. W przypadku sprawdzania czy plik został zmodyfikowany, biorę ostatni czas edycji w sekundach i jeśli czas zmiany jest większy niż jedna sekunda to znaczy, że trzeba skopiować go. Skrypt wrzuciłem sobie na pulpit i mam tam folder Projects i Google Drive. Podałem po prostu ich ścieżki i wszystko ładnie działa.