+++ /dev/null
-
-discspan Version 1.0 2015-07-13
-===============================
-
-------------
-Beschreibung
-------------
-
-Man hat viele Dateien, die nicht auf ein Medium (z.B. DVD) passen.
-discpan teilt eine Textdatei mit den Pfaden aller Dateien auf.
-Die Dateien, die auf ein Medium passen werden in das output-file geschrieben.
-Der Rest der Dateien wir dann in das rest-file geschrieben.
-
-------------
-Installation
-------------
-
-make
-make install
-
--------------------
-Anwendung (Example)
--------------------
-
-1. Um eine Dateiliste zu erstellen verwendet man am besten find und sort:
-
- find /pfad/zur/den/Dateien -type f | sort > testfile
-
-2. discspan ausführen, um die Dateien auf ein DVD5 aufzuteilen
-
- discspan testfile medium restfile -5
-
-3. Dateien herauskopieren mit rsync
-
- rsync -av --files-from=medium / /pfad/zum/wegkopieren/
-
-Es ist noch ein batch.sh Bashscript dabei, um das ganze so lange durchzuführen bis alles aufgeteilt ist.
-
---------------------
-Command Line Options
---------------------
-
-Usage: discspan <input> <output> <rest> <option>
-
- <input> Textdatei enthält alle Dateipfade, die auf den Datenträger sollen
- <output> Textdatei enthält alle Dateipfade, die auf den Datenträger passen
- <rest> Textdatei enthält alle Dateipfade, die nicht auf den Datenträger gepasst haben
-
- option:
- -9 Entspricht der Größe einer Double Layer DVD: 8.500.000.000 Bytes
- -5 Entspricht der Größe einer Single Layer DVD: 4.700.000.000 Bytes
- -c Entspricht der Größe einer CD: 734.003.200 Bytes
- -f <Größe> Option zur Größenangabe in Bytes
-
--------
-Kontakt
--------
-Autor: Bastian Dehn
-E-Mail: hhaalo@arcor.de
return 1;
}
-void splitter(const char *input, const char *output, const char *rest, unsigned long long splitgroesse)
+void splitter(const char *input, char *output, const char *rest, unsigned long long splitgroesse)
{
struct stat st;
char pfad[255];
void usage()
{
- printf("\nUsage: discspan <input> <output> <rest> <option>\n\n");
+ printf("\nUsage: discspan <input> <output> <option>\n\n");
printf(" <input>\tTextdatei enthält alle Dateipfade, die auf den Datenträger sollen\n");
- printf(" <output>\tTextdatei enthält alle Dateipfade, die auf den Datenträger passen\n");
- printf(" <rest>\t\tTextdatei enthält alle Dateipfade, die nicht auf den Datenträger gepasst haben\n\n");
+ printf(" <output>\tTextdatei enthält alle Dateipfade, die auf den Datenträger passen\n\n");
printf(" option:\n");
printf(" -9\t\tEntspricht der Größe einer Double Layer DVD: 8.500.000.000 Bytes\n");
printf(" -5\t\tEntspricht der Größe einer Single Layer DVD: 4.700.000.000 Bytes\n");
{
const char *input = argv[1];
const char *output = argv[2];
- const char *rest = argv[3];
+ const char *rest = "rest";
const char *work = "work";
+
+ char outname[sizeof output] = "";
+ int num = 1;
+
unsigned long long split;
int c;
extern char *optarg;
const unsigned long long dvd5 = 4700000000;
const unsigned long long cd = 734003200;
- if(argc <= 4)
+ if(argc <= 3)
{
usage();
return 1;
}
}
- filecopy(input, work);
- splitter(work, output, rest, split);
+ filecopy(input, rest);
+ while(exists(rest) == 0)
+ {
+ sprintf(outname, "%s%d",output , num++);
+ if(exists(rest) == 0)
+ {
+ filecopy(rest, work);
+ remove(rest);
+ }
+ splitter(work, outname, rest, split);
+ }
remove(work);
return 0;