Encfs Dateinamen decrypten
#!/usr/bin/python import string,sys,os encfsin,encfsout= os.popen2("encfsctl decode .one " ,"w") while (1): zeile = sys.stdin.readline() #print zeile gefunden = zeile.find("changed <-?-> changed ") if (gefunden >= 0): #print zeile[26:] encfsin.write(zeile[26:]) encfsin.flush() #encfsin.close() decrypt=encfsout.readline() #encfsout.close() print "changed <-?-> changed " + zeile[26:].strip() +"="+ decrypt.strip() else: print zeile.strip() if (zeile == ""): break
Erklärung: Wenn unison einen Versionskonflikt entdeckt, dann fragt er den Anwender, was er tun soll. Das hat natürlich bei einem verschlüsselten Dateisystem den Nachteil, dass man erst umständlich jeden Namen mit dem encfsctl-Kommando wieder dechiffrieren muss, um eine Entscheidung treffen zu können. Dafür hat Jochen dieses Skript erdacht: es sucht aus der Logdatei, die unsion anlegt die Zeilen mit dem String "changed <-?-> changed " heraus, wodurch unison einen Versionskonflikt anzeigt, dechiffriert dann die Namen und gibt das Ganze bekömmlich aufbereitet wieder aus :)