Hi,
ich habe eine kleine backup-Lösung mit tar realisiert, die auch wunderbar läuft. Bisher dachte ich immer, wenn das tarfile in etwa so groß ist wie der getarte Ordner, stimmt's grob. Jetzt musste ich aber feststellen das dem nicht immer so ist.
pc52842:/srv/www/htdocs/mausdb # du -sh . 678M . pc52842:/srv/www/htdocs/mausdb # pc52842:/srv/www/htdocs/mausdb # ll -h /mnt/idg-2/SysAdmin_AG_Wurst/backup/mausdb/applikation/daily/ ... -rwxrwSrwt 1 root root 173M Apr 11 13:12 htdocs.tar.Tuesday
Wie Ihr seht ist der enttarte Ordner 678 MB groß, der tar-file aber nur 173MB ! Und ich tarre nur, ich gzippe nicht. Hier die Zeile wie der tar-file erzeugt wird (in einem skript):
cd /srv/www/htdocs/mausdb /bin/tar cpf /mnt/idg-2/SysAdmin_AG_Wurst/backup/mausdb/applikation/daily/htdocs.tar.`date +%A` *
Der tar-file wird auf einem Server erzeugt, und wenn ich ihn anschließend auf einen anderen Server enttarre, ist der Ordner genau so groß wie das Original. Ist ja schön, klappt alles fehlerfrei, aber ich bin doch einigermaßen überrascht. Und der Unterschied ist ja signifikant.
Kann das daran liegen, daß in dem Ordner sehr viele kleine Dateien liegen ?
pc52974:/srv/www/htdocs/mausdb # find . -type f |wc -l 170764
Ich dachte tar pappt einfach nur die files zusammen (wie ein Teerklumpen halt), komprimiert aber AFAIK nur wenn ich zusätzlich den Schalter -z nutze. Oder?
Danke.
Bernd
Hi,
man, Du hast aber Problem :-)
Am 11.04.2017 um 16:00 schrieb Lentes, Bernd:
Hi,
ich habe eine kleine backup-Lösung mit tar realisiert, die auch wunderbar läuft. Bisher dachte ich immer, wenn das tarfile in etwa so groß ist wie der getarte Ordner, stimmt's grob. Jetzt musste ich aber feststellen das dem nicht immer so ist.
pc52842:/srv/www/htdocs/mausdb # du -sh . 678M . pc52842:/srv/www/htdocs/mausdb # pc52842:/srv/www/htdocs/mausdb # ll -h /mnt/idg-2/SysAdmin_AG_Wurst/backup/mausdb/applikation/daily/ ... -rwxrwSrwt 1 root root 173M Apr 11 13:12 htdocs.tar.Tuesday
Wie Ihr seht ist der enttarte Ordner 678 MB groß, der tar-file aber nur 173MB ! Und ich tarre nur, ich gzippe nicht. Hier die Zeile wie der tar-file erzeugt wird (in einem skript):
cd /srv/www/htdocs/mausdb /bin/tar cpf /mnt/idg-2/SysAdmin_AG_Wurst/backup/mausdb/applikation/daily/htdocs.tar.`date +%A` *
Der tar-file wird auf einem Server erzeugt, und wenn ich ihn anschließend auf einen anderen Server enttarre, ist der Ordner genau so groß wie das Original. Ist ja schön, klappt alles fehlerfrei, aber ich bin doch einigermaßen überrascht. Und der Unterschied ist ja signifikant.
Kann das daran liegen, daß in dem Ordner sehr viele kleine Dateien liegen ?
pc52974:/srv/www/htdocs/mausdb # find . -type f |wc -l 170764
Ich dachte tar pappt einfach nur die files zusammen (wie ein Teerklumpen halt), komprimiert aber AFAIK nur wenn ich zusätzlich den Schalter -z nutze. Oder?
Sollte so sein. Was mir aber spontan eingefallen ist, sind in dem Ordner vielleicht Sparse-Files?
Gruß Manfred
Am Dienstag, 11. April 2017, 16:00:34 CEST schrieb Lentes, Bernd:
Hi,
ich habe eine kleine backup-Lösung mit tar realisiert, die auch wunderbar läuft. Bisher dachte ich immer, wenn das tarfile in etwa so groß ist wie der getarte Ordner, stimmt's grob. Jetzt musste ich aber feststellen das dem nicht immer so ist.
manche Dateisystem speichern 0-bytes etwas "schlauer" als einfach als Folge von 0'en. Es wird zwar der erwartete Size angezeigt, aber nicht belegt. Ich meine mich zu erinnerern, dass tar as "weiss" und damit entsprechend umgeht.
Bye Jürgen
Hallo Bernd,
Am Dienstag, 11. April 2017 16:00 schrieb Lentes, Bernd:
pc52842:/srv/www/htdocs/mausdb # du -sh . 678M . pc52842:/srv/www/htdocs/mausdb # pc52842:/srv/www/htdocs/mausdb # ll -h /mnt/idg-2/SysAdmin_AG_Wurst/backup/mausdb/applikation/daily/ ... -rwxrwSrwt 1 root root 173M Apr 11 13:12 htdocs.tar.Tuesday
Wie Ihr seht ist der enttarte Ordner 678 MB groß, der tar-file aber nur 173MB ! Und ich tarre nur, ich gzippe nicht. Hier die Zeile wie der tar-file erzeugt wird (in einem skript):
Kann das daran liegen, daß in dem Ordner sehr viele kleine Dateien liegen ?
Ja du -hs zeigt den durch die Dateien belegten Platz an, tar packt jedoch nur den wirklich von der Datei belegten Platz in das tar-Archiv.
Auch eine Ein-Byte-Große Datei belegt einen ganzen Block im Dateisystem.
----- On Apr 11, 2017, at 6:02 PM, Marcus Roeckrath marcus.roeckrath@gmx.de wrote:
Ja du -hs zeigt den durch die Dateien belegten Platz an, tar packt jedoch nur den wirklich von der Datei belegten Platz in das tar-Archiv.
Auch eine Ein-Byte-Große Datei belegt einen ganzen Block im Dateisystem.
-- Gruß Marcus
Hi Marcus,
stimmt, habs mal getest:
pc52842:~ # cd test/ pc52842:~/test # ll total 4 -rw-r--r-- 1 root root 16 Jun 20 2012 hallo pc52842:~/test # cat hallo hallhallhallooo pc52842:~/test # stat hallo File: `hallo' Size: 16 Blocks: 8 IO Block: 4096 regular file Device: 6802h/26626d Inode: 1130517 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-04-11 23:02:44.000000000 +0200 Modify: 2012-06-20 23:57:50.000000000 +0200 Change: 2012-06-20 23:57:50.000000000 +0200 pc52842:~/test # du -sh . 8.0K . pc52842:~/test # .. pc52842:~ # du -sh test 8.0K test pc52842:~ # ll -d test drwxr-xr-x 2 root root 4096 Jun 20 2012 test
Wobei ich dann nicht verstehe wieso der tar doch so groß wird:
pc52842:~ # tar cvf test.tar test test/ test/hallo pc52842:~ # ll test.tar -rw-r--r-- 1 root root 10240 Apr 11 23:08 test.tar pc52842:~ # stat test.tar File: `test.tar' Size: 10240 Blocks: 24 IO Block: 4096 regular file Device: 6802h/26626d Inode: 6587152 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2017-04-11 23:08:34.000000000 +0200 Modify: 2017-04-11 23:08:34.000000000 +0200 Change: 2017-04-11 23:08:34.000000000 +0200
In dem tar steht fast nix drin:
pc52842:~ # cat test.tar test/0000755000000000000000000000000011770443566010550 5ustar rootroottest/hallo0000644000000000000000000000002011770443536011557 0ustar rootroothallhallhallooo
Wo kommen die 10KB her ?
Bernd
Helmholtz Zentrum Muenchen Deutsches Forschungszentrum fuer Gesundheit und Umwelt (GmbH) Ingolstaedter Landstr. 1 85764 Neuherberg www.helmholtz-muenchen.de Aufsichtsratsvorsitzende: MinDir'in Baerbel Brumme-Bothe Geschaeftsfuehrer: Prof. Dr. Guenther Wess, Heinrich Bassler, Dr. Alfons Enhsen Registergericht: Amtsgericht Muenchen HRB 6466 USt-IdNr: DE 129521671
Hallo Bernd,
Am Dienstag, 11. April 2017 23:21 schrieb Lentes, Bernd:
Wobei ich dann nicht verstehe wieso der tar doch so groß wird:
In dem tar steht fast nix drin:
pc52842:~ # cat test.tar test/0000755000000000000000000000000011770443566010550 5ustar rootroottest/hallo0000644000000000000000000000002011770443536011557 0ustar rootroothallhallhallooo
Wo kommen die 10KB her ?
Nimm nicht cat sondern einen hexeditor oder ähnliches, dann wirst Du sehen, dass da doch mehr drin steht.
F4 im mc auf das tar-Archiv zeigt Dir auch mehr an.
Da werden noch weitere Verwaltungsinformationen im tar-Header stehen, die aber cat nicht anzeigt.
Am 11.04.2017 um 18:02 schrieb Marcus Roeckrath:
Hallo Bernd,
Am Dienstag, 11. April 2017 16:00 schrieb Lentes, Bernd:
pc52842:/srv/www/htdocs/mausdb # du -sh . 678M . pc52842:/srv/www/htdocs/mausdb # pc52842:/srv/www/htdocs/mausdb # ll -h /mnt/idg-2/SysAdmin_AG_Wurst/backup/mausdb/applikation/daily/ ... -rwxrwSrwt 1 root root 173M Apr 11 13:12 htdocs.tar.Tuesday
Wie Ihr seht ist der enttarte Ordner 678 MB groß, der tar-file aber nur 173MB ! Und ich tarre nur, ich gzippe nicht. Hier die Zeile wie der tar-file erzeugt wird (in einem skript):
Kann das daran liegen, daß in dem Ordner sehr viele kleine Dateien liegen ?
Ja du -hs zeigt den durch die Dateien belegten Platz an, tar packt jedoch nur den wirklich von der Datei belegten Platz in das tar-Archiv.
Auch eine Ein-Byte-Große Datei belegt einen ganzen Block im Dateisystem.
... sofern das Dateisystem nicht "block suballocation" beherrscht
Gruß Manfred
----- On Apr 11, 2017, at 11:39 PM, Marcus Roeckrath marcus.roeckrath@gmx.de wrote:
Hallo Bernd,
Am Dienstag, 11. April 2017 23:21 schrieb Lentes, Bernd:
Wobei ich dann nicht verstehe wieso der tar doch so groß wird:
In dem tar steht fast nix drin:
pc52842:~ # cat test.tar test/0000755000000000000000000000000011770443566010550 5ustar rootroottest/hallo0000644000000000000000000000002011770443536011557 0ustar rootroothallhallhallooo
Wo kommen die 10KB her ?
Nimm nicht cat sondern einen hexeditor oder ähnliches, dann wirst Du sehen, dass da doch mehr drin steht.
F4 im mc auf das tar-Archiv zeigt Dir auch mehr an.
Da werden noch weitere Verwaltungsinformationen im tar-Header stehen, die aber cat nicht anzeigt.
Hallo Marcus,
stimmt.
pc52842:~ # hexdump -C test.tar
00000000 74 65 73 74 2f 00 00 00 00 00 00 00 00 00 00 00 |test/...........| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 |....0000755.0000| 00000070 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 |000.0000000.0000| 00000080 30 30 30 30 30 30 30 00 31 31 37 37 30 34 34 33 |0000000.11770443| 00000090 35 36 36 00 30 31 30 35 35 30 00 20 35 00 00 00 |566.010550. 5...| 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 |.ustar .root...| 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 |.........root...| 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000200 74 65 73 74 2f 68 61 6c 6c 6f 00 00 00 00 00 00 |test/hallo......| 00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 |....0000644.0000| 00000270 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 |000.0000000.0000| 00000280 30 30 30 30 30 32 30 00 31 31 37 37 30 34 34 33 |0000020.11770443| 00000290 35 33 36 00 30 31 31 35 35 37 00 20 30 00 00 00 |536.011557. 0...| 000002a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 |.ustar .root...| 00000310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 |.........root...| 00000330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00000400 68 61 6c 6c 68 61 6c 6c 68 61 6c 6c 6f 6f 6f 0a |hallhallhallooo.| 00000410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| * 00002800
Aber da sind auch ein Haufen Nullen drin. Wirklich viel steht da nicht drin:
"The * indicates that all of the lines from 00000330 to 00000400 inclusive would be the same value as the 00000330 line and that keeps the output condensed for large files with long and aligned repeating sequences. "
https://www.suse.com/communities/blog/making-sense-hexdump/
Bernd
Bernd
Helmholtz Zentrum Muenchen Deutsches Forschungszentrum fuer Gesundheit und Umwelt (GmbH) Ingolstaedter Landstr. 1 85764 Neuherberg www.helmholtz-muenchen.de Aufsichtsratsvorsitzende: MinDir'in Baerbel Brumme-Bothe Geschaeftsfuehrer: Prof. Dr. Guenther Wess, Heinrich Bassler, Dr. Alfons Enhsen Registergericht: Amtsgericht Muenchen HRB 6466 USt-IdNr: DE 129521671
On Mi, 12 Apr 2017, Lentes, Bernd wrote:
pc52842:~ # hexdump -C test.tar
00000000 74 65 73 74 2f 00 00 00 00 00 00 00 00 00 00 00 |test/...........| 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000060 00 00 00 00 30 30 30 30 37 35 35 00 30 30 30 30 |....0000755.0000| 00000070 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 |000.0000000.0000| 00000080 30 30 30 30 30 30 30 00 31 31 37 37 30 34 34 33 |0000000.11770443| 00000090 35 36 36 00 30 31 30 35 35 30 00 20 35 00 00 00 |566.010550. 5...| 000000a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000100 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 |.ustar .root...| 00000110 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000120 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 |.........root...| 00000130 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000200 74 65 73 74 2f 68 61 6c 6c 6f 00 00 00 00 00 00 |test/hallo......| 00000210 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000260 00 00 00 00 30 30 30 30 36 34 34 00 30 30 30 30 |....0000644.0000| 00000270 30 30 30 00 30 30 30 30 30 30 30 00 30 30 30 30 |000.0000000.0000| 00000280 30 30 30 30 30 32 30 00 31 31 37 37 30 34 34 33 |0000020.11770443| 00000290 35 33 36 00 30 31 31 35 35 37 00 20 30 00 00 00 |536.011557. 0...| 000002a0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000300 00 75 73 74 61 72 20 20 00 72 6f 6f 74 00 00 00 |.ustar .root...| 00000310 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................| 00000320 00 00 00 00 00 00 00 00 00 72 6f 6f 74 00 00 00 |.........root...| 00000330 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00000400 68 61 6c 6c 68 61 6c 6c 68 61 6c 6c 6f 6f 6f 0a |hallhallhallooo.| 00000410 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
00002800
Aber da sind auch ein Haufen Nullen drin. Wirklich viel steht da nicht drin:
"The * indicates that all of the lines from 00000330 to 00000400 inclusive would be the same value as the 00000330 line and that keeps the output condensed for large files with long and aligned repeating sequences. "
Default block size bei tar ist 20. D.h. die Daten werden in 20*512 Byte großen Blöcken geschrieben. Nicht vorhandene Daten werden mit NULL aufgefüllt.
Du kannst ja mal mit der -b bzw. --record-size Option spielen.
Christian