FTP Hash Funktion für Ordner



  • Hallo!
    ich schreibe eine Funktion, die ein lokales Verzeichnis mit einem Online Verzeichnis per FTP vergleicht. Im Moment läuft das über die Dateigrößen. Aber ich muss jede Datei einzeln vergleichen.
    Das dauert mir zu lange. Gibt es irgendeine Möglichkeit das schneller abzuwickeln? z.B. Über Hash Funktionen oder sowas?

    Christoph



  • versuch mit checksumme



  • Ich wüsste nicht das FTP Checksummen oder Hashes unterstützt.
    Schneller als das Vergleichen der Dateigröße über das Directory-Listing wirds wohl nicht gehen.

    Würd mich aber freuen wenn ich mich irre 😉



  • ich meinte eher mit eigenen checksumme, aber die performance...
    also wenn dir dateigroesse noch nicht schnell genug ist, kannst du verschiedene optimierungen machen, zum bleistift wenn ein ordner viele dateien hat, dann versuch mit last changed time, wenn da nichts da ist , brauchst nicht gucken.



  • ich habe was besseres fuer dich gefunden.
    mit filesystemwatcher findest du welche datei geaendert wird. dann speicherst du alle geaenderte dateien in einer txt datei.
    beispielcode hier
    public class Watcher
    {

    public static void Main()
    {
    Run();

    }

    [PermissionSet(SecurityAction.Demand, Name="FullTrust")]
    public static void Run()
    {
    string[] args = System.Environment.GetCommandLineArgs();

    // If a directory is not specified, exit program.
    if(args.Length != 2)
    {
    // Display the proper way to call the program.
    Console.WriteLine("Usage: Watcher.exe (directory)");
    return;
    }

    // Create a new FileSystemWatcher and set its properties.
    FileSystemWatcher watcher = new FileSystemWatcher();
    watcher.Path = args[1];
    /* Watch for changes in LastAccess and LastWrite times, and
    the renaming of files or directories. /
    watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
    | NotifyFilters.FileName | NotifyFilters.DirectoryName;
    // Only watch text files.
    watcher.Filter = "
    .txt";

    // Add event handlers.
    watcher.Changed += new FileSystemEventHandler(OnChanged);
    watcher.Created += new FileSystemEventHandler(OnChanged);
    watcher.Deleted += new FileSystemEventHandler(OnChanged);
    watcher.Renamed += new RenamedEventHandler(OnRenamed);

    // Begin watching.
    watcher.EnableRaisingEvents = true;

    // Wait for the user to quit the program.
    Console.WriteLine("Press \'q\' to quit the sample.");
    while(Console.Read()!='q');
    }

    // Define the event handlers.
    private static void OnChanged(object source, FileSystemEventArgs e)
    {
    // Specify what is done when a file is changed, created, or deleted.
    Console.WriteLine("File: " + e.FullPath + " " + e.ChangeType);
    }

    private static void OnRenamed(object source, RenamedEventArgs e)
    {
    // Specify what is done when a file is renamed.
    Console.WriteLine("File: {0} renamed to {1}", e.OldFullPath, e.FullPath);
    }
    }


Anmelden zum Antworten