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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Oliver L. (Gast)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von jibi (Gast)


Bewertung
0 lesenswert
nicht 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. (jojos)


Bewertung
0 lesenswert
nicht 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.

: Bearbeitet durch User
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht 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)

: Bearbeitet durch User

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.