Forum: PC-Programmierung Unterschiedliche Datein in Ordner finden und rauskopieren


von Oliver L. (Gast)


Lesenswert?

Hallo,

ich habe ein großes SW Projekt von 1GB auf dem Dateisystem (400MB 
gepackt).
Davon habe ich 10 Kopien auf dem Rechner mit unterschiedlichen SW 
Ständen.

Diese unterscheiden sich aber nur in einigen wenigen Source Files. Und 
noch dem erzeugten Binary.

Ich würde gerne das Ursprungs-Projekt zippen (400MB). Von den 
Folgeständen hätte ich aber gerne ein kleines Zip das jeweils nur die 
geänderten Dateien in ihren Unterordnern enthält, die ich dann wieder 
dem Kunden zur Archivierung zur Verfügung stellen kann. Am liebsten so, 
dass ich zum Beispiel *.obj oder ähnliche ausschließen kann. Gibt es 
solche Tools? Können das Difftools?

System ist Win10.
Gruß Oliver

von Adam P. (adamap)


Lesenswert?

um die unterschiede zwischen den dateien zu finden, kannst dir mal 
freefilesync anschauen.
da kannst 2 ordner wählen, dateitypen definieren oder ausschliessen.

somit verwendest du wohl kein git oder subversion?

von georg (Gast)


Lesenswert?

Oliver L. schrieb:
> Von den
> Folgeständen hätte ich aber gerne ein kleines Zip das jeweils nur die
> geänderten Dateien in ihren Unterordnern enthält

Die üblichen Imager können ausser Voll-Backup auch inkrementelle Backups 
machen, die nur die Änderungen gegenüber dem vorigen Stand enthalten. 
Allerdings ist es dementsprechend aufwendiger, einen bestimmten Zustand 
wiederherzustellen, weil man da alle Versionen nacheinander einspielen 
muss.

Alternativ gibt es auch differentielles Backup, da braucht man nur die 
ursprüngliche Komplettsicherung und die letzte Version. Das ist wohl das 
was du dir vorstellst.

Georg

von Toby P. (Gast)


Lesenswert?

Adam P. schrieb:
> somit verwendest du wohl kein git oder subversion?

Frag ich mich auch. Vom Prinzip her muss man Doubletten suchen und dann 
über das Datum in Unterverzeichnisse sortieren. Dann halt manuell 
committen. Das funzt aber nur wenn sich Dateinamen nie geändert haben. 
Dateitypen kann man mit einem  ignorefile ausschließen.

Selber Nutze ich Mercurial, ist imo am leichtesten zu lernen.

von Adam P. (adamap)


Lesenswert?

also wenn du nur unterschiede sehen wilst, dann ist git zu viel.

ich nutze ab und zu
virtual svn server
und
tortoisesvn

das ist recht easy und erfüllt sein zweck

von jibi (Gast)


Lesenswert?

Speicherplatz kostet doch nichts. Ich würde tatsächlich für jedes 
Projekt eine eigene virtuelle Maschine benutzen, die eine 
kompilier-fähige Umgebung inklusive Projekt bereithält. So kannst du 
auch nach Jahren, das gleiche Build reproduzierbar (und dein Kunde auch) 
erzeugen.

von Adam P. (adamap)


Lesenswert?

jibi schrieb:
> eine eigene virtuelle Maschine benutzen

WTH?
hast du zu warm geduscht? ?

selbst wenn es nur 4 projekte im jahr sind, willst du jedes mal ein 
ganzes virtuelles laufwerk mit OS speichern wollen?

4 * ca. 20GB = 80GB (inkl. IDE, compiler, usw.)

obwohl sich nur paar KB an quell code geändert haben?....

naja.... kann man machen, ist halt s*****.

von ? DPA ? (Gast)


Lesenswert?

Ich würde wohl git verwenden. Wenn du aber kein VC willst:

Bei COW / ROW Dateisystemen, wie z.B. btrfs, zfs und xfs, kann man 
identische Dateien Deduplizieren. Das funktioniert auf Blockebene 
ähnlich wie Hardlinks, nur dass die Dateien für den User quasi 
unabhängig bleiben / bei Bedarf kopiert werden.

Ordnerinhalte vergleichen kann man mit `diff` machen (gewisse Dateien 
excludieren, nur Namen anzeigen, und vieles mehr, ist damit kein 
Problem, zumindest mit der Variante die ich hier habe.). Einfach in der 
Manpage (`man diff`) nachsehen.

Adam P. schrieb:
> jibi schrieb:
>> eine eigene virtuelle Maschine benutzen
> ...
> selbst wenn es nur 4 projekte im jahr sind, willst du jedes mal ein
> ganzes virtuelles laufwerk mit OS speichern wollen?

Dass kann man mit dem guest geshartem COW / ROW Dateisystemen auch 
lösen. Ich nehme wo möglich aber lieber Container, weniger Overhead. 
Overlays gingen wohl auch, finde ich aber für sowas eher unpraktisch.

Ein Nachteil von VC und COW gegenüber separaten vollständigen Kopien ist 
aber die geringere Redundanz.

Beitrag #6339438 wurde vom Autor gelöscht.
von Toby P. (Gast)


Lesenswert?

jibi schrieb:
> würde tatsächlich für jedes Projekt eine eigene virtuelle Maschine
> benutzen,

Er hat aber nur ein Projekt.

? DPA ? schrieb:
> Ein Nachteil von VC und COW gegenüber separaten vollständigen Kopien ist
> aber die geringere Redundanz.

Die gibt es doch schon. Außerdem lassen sich per Versionskontrolle 
redundate Backouts erzeugen wie man lustig ist.


> Dass kann man mit dem guest geshartem COW / ROW Dateisystemen auch
> lösen.
Am besten noch auf nen Bündel virtueller Maschinen. (Mein Beitrag zum 
Wettbewerb der kompliziertesten Lösung ;-).)

von Stefan F. (Gast)


Lesenswert?

Toby P. schrieb:
> Selber Nutze ich Mercurial, ist imo am leichtesten zu lernen.

Subversion kann man ohne Server ausprobieren. Als "Zentrale" kann auch 
einfach ein Verzeichnis dienen. Geht das auch mit Mercurial?

Ich empfehle dazu die GUI von Tortoise.

Unterschiedliche Dateien kannst du z.B. mit WinMerge finden.

von jibi (Gast)


Lesenswert?

>selbst wenn es nur 4 projekte im jahr sind, willst du jedes mal ein
>ganzes virtuelles laufwerk mit OS speichern wollen?

Jein. Informiere dich mal über Docker, (git kenn ja die meisten) und 
composer. Damit beschreibst du einfach deine Umgebung, checkst die im 
git ein und kannst die jederzeit beliebige branches aus dem repo bauen, 
deployen what so ever. auch mit integrationstest etc.


>Am besten noch auf nen Bündel virtueller Maschinen. (Mein Beitrag zum
>Wettbewerb der kompliziertesten Lösung ;-).)

Ja einfach ist das nicht. Aber ich wollte nie wieder eine komplexere 
Webanwendung wie früher "bauen". Mit composer Kinderspiel.

Bei Git einfach die Console benutzen, bis die Befehle sitzen -> das 
hilft auch ungemein das Staging etc zu verstehen.
Eigentlich brauchst du erstmal nur:

git init
(git clone)
git add .
git commit -m "bla bla"
git status
git diff

von Johannes S. (Gast)


Lesenswert?

mit dem TotalCommander geht sowas bequem und übersichtlich.

Aber Versionsverwaltung ohne git o.ä.? Nimmerwieder. Auch für git gibt 
es zig grafische Oberflächen (auch den TotalCommander mit TortoiseGit). 
Es geht ohne Server, aber mit braucht der Gegner nur ein 'pull' machen 
um den Stand zu aktualisieren, das diff bildet git dann und macht den 
download effizient.

von Stefan F. (Gast)


Lesenswert?

jibi schrieb:
> kannst die jederzeit beliebige branches aus dem repo bauen,

Bis jemand das "repo" abschaltet. Die Besitzer von Internet-Radios 
wissen, wovon ich rede.

Ich habe in 5 Jahren schon zweimal die Abschaltung von Maven 
Repositories erlebt, die ich brauchte. Und ich pflege Programme, die zum 
Teil älter als 20 Jahre sind. Da wird man, was solche externe 
Abhängigkeiten angeht, sehr vorsichtig. (Tipp: Sonatype Nexus als 
cache+proxy nutzen)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.