Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di Rommel
    Registrato dal
    Jun 2004
    Messaggi
    955

    Creare un file vuoto di grandezza arbitraria

    ciao a tutti,
    conoscete il modo per creare un file vuoto di grandezza arbitraria?

    con touch nome_del_file lo creo e come lo rendo grande 680mb?

    grazie per le eventuali risposte
    In a world without walls and fences, who needs windows and gates?

  2. #2

    Re: Creare un file vuoto di grandezza arbitraria

    Originariamente inviato da Rommel
    ciao a tutti,
    conoscete il modo per creare un file vuoto di grandezza arbitraria?
    con touch nome_del_file lo creo e come lo rendo grande 680mb?
    grazie per le eventuali risposte
    dovrebbe funzionare:
    codice:
    dd if=/dev/zero of=/path/al/file bs=1k seek=$( expr 680 \* 1024 \* 1024 )
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  3. #3
    Utente di HTML.it L'avatar di Rommel
    Registrato dal
    Jun 2004
    Messaggi
    955
    funziona

    grazie per l'aiuto
    In a world without walls and fences, who needs windows and gates?

  4. #4
    Utente di HTML.it L'avatar di Rommel
    Registrato dal
    Jun 2004
    Messaggi
    955
    no...non funziona.

    mi sembra che hai involontariamente scoperto un bug di gnu/linux. risulta che il file 000.0 (il file che voglio rendere di 680Mb) sia grande 680Gb VVoVe:
    In a world without walls and fences, who needs windows and gates?

  5. #5
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570

    Re: Re: Creare un file vuoto di grandezza arbitraria

    Originariamente inviato da Ikitt
    dovrebbe funzionare:
    codice:
    dd if=/dev/zero of=/path/al/file bs=1k seek=$( expr 680 \* 1024 \* 1024 )
    Su questo non sarei propriamente d'accordo anche se Rommel ha detto che funziona perfettamente.
    Se non ho capito male, il comando dovrebbe iniziare a saltare (seek) 680M quindi scrivere il file di ingresso a blocchi di 1k. Io avrei aggiunto anche l'opzione count=1 altrimenti dovrebe scrivere fino ad esaurimento dello spazio sulla partizione. Naturalmente non vengo qui senza dati alla mano.
    codice:
    [sergio@winnie ~]$ time dd if=/dev/zero of=blankCD.iso bs=1k seek=1024
    interruzione volontaria con [CTRL]-[C]
    entrati 73397+0 record
    usciti 73396+0 record
    75157504 bytes transferred in 1,597279 seconds (47053463 bytes/sec)
    
    
    real    0m1.599s
    user    0m0.000s
    sys     0m0.940s
    [sergio@winnie ~]$ ls -lh blankCD.iso
    -rw-r--r--  1 sergio sergio 73M 2005-03-29 19:46 blankCD.iso
    [sergio@winnie ~]$ rm blankCD.iso
    [sergio@winnie ~]$ time dd if=/dev/zero of=blankCD.iso bs=1k seek=1024 count=1
    entrati 1+0 record
    usciti 1+0 record
    1024 bytes transferred in 0,009862 seconds (103833 bytes/sec)
    
    real    0m0.011s
    user    0m0.010s
    sys     0m0.000s
    [sergio@winnie ~]$ ls -lh blankCD.iso
    -rw-r--r--  1 sergio sergio 1,1M 2005-03-29 19:47 blankCD.iso
    [sergio@winnie ~]$
    ciao

    [EDIT]
    come non detto...

    originariamente inviato da Rommel:
    no...non funziona.

    mi sembra che hai involontariamente scoperto un bug di gnu/linux. risulta che il file 000.0 (il file che voglio rendere di 680Mb) sia grande 680Gb
    Non si tratta di un bug. ---> man dd
    slack? smack!

  6. #6
    Utente di HTML.it L'avatar di Rommel
    Registrato dal
    Jun 2004
    Messaggi
    955
    risolto con:
    dd if=/dev/zero of=./000.0 seek=1024 count=1392640

    grazie per il suggerimento
    In a world without walls and fences, who needs windows and gates?

  7. #7
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Originariamente inviato da Rommel
    risolto con:
    dd if=/dev/zero of=./000.0 seek=1024 count=1392640

    grazie per il suggerimento
    Anche se per quello che chiedi tu è più 'elegante' scrivere semplicemente:
    dd if=/dev/zero of=000.0 bs=1k count=$(expr 680 \* 1024)
    come suggeriva il buon Ikitt dove sono sicuro abbia scritto, per una svista, seek in luogo di count.
    Il parametro "seek" non ha rilevante importanza in questo caso.

    ciao
    slack? smack!

  8. #8
    Originariamente inviato da cacao74
    Anche se per quello che chiedi tu è più 'elegante' scrivere semplicemente:
    dd if=/dev/zero of=000.0 bs=1k count=$(expr 680 \* 1024)
    come suggeriva il buon Ikitt dove sono sicuro abbia scritto, per una svista, seek in luogo di count.
    Il parametro "seek" non ha rilevante importanza in questo caso.
    C'e` stata una serie di sviste mescolate tra loro
    Quel che volevo fare sin da principio e` creare un file "sparso", cosa che si dovrebbe (stavolta ho provato, ma mi auto-concedo il beneficio del dubbio) fare cosi`:
    codice:
    dd if=/dev/zero of=test.img bs=1k count=1 seek=$(expr 680 \* 1024)
    Un file sparso ha alcune interessanti caratteristiche:
    - ha dimensione prefissata, ma non occupa blocchi su disco (in effetti e` sostanzialmente vuoto, a parte 1k di zeri in questo caso)
    - si crea assai piu` velocemente di un file pieno, in quanto... vuoto

    esempio:
    codice:
    $ dd if=/dev/zero of=test.img bs=1k count=1 seek=$(expr 680 \* 1024)
    1+0 records in
    1+0 records out
    1024 bytes transferred in 0.000144 seconds (7110873 bytes/sec)
    $ ls -lh test.img
    -rw-r--r--  1 xromani xromani 681M Mar 30 09:26 test.img
    $ df -h | grep tmp
    tmpfs                 502M     0  502M   0% /dev/shm
    /dev/mapper/sysvg-lv_tmp
                          2.1G   33M  2.0G   2% /tmp
    Il problema, almeno cosi` su due piedi, sta nel riempimento, nel senso che se si prova a copiarci dentro dati, la dimensione cambia in proporzione al contenuto effettivo. Ho un'idea del perche` accade questo, ma non saprei come evitarlo :\
    "Qualsiasi esperto ha paura di combattere usando la katana vera. Anch'io. Ma non ignoro la mia paura, riesco ad accettarla, e a metterla da parte accanto a me".

  9. #9
    Utente di HTML.it L'avatar di cacao74
    Registrato dal
    Jan 2005
    Messaggi
    2,570
    Interessante la questione di questi "sparse file".

    In effetti il mio di utilizzare "dd" permetteva la creazione di un file, vuoto, la cui dimensione fisica corrisponde a quella logica. Il file è effettivamente riempito di zeri:
    dd if=/dev/zero of=000.0 bs=1k count=$(expr 680 \* 1024)

    La creazione di uno "sparse file" invece permette di creare un file effettivamente "vuoto" la cui dimensione fisica non corrisponde alla dimensione logica del file:
    dd if=/dev/zero of=test.img bs=1k count=1 seek=$(expr 680 \* 1024)

    Infatti negll'esempio precedente andiamo a scrivere 1024 byte di dati dopo aver fatto un salto di 680MB. Logicamente il file ha dimensione logica di 680M+1k, mentre lo spazio realmente occupato è di 1k.

    Se si necessita di scrivere su un file vuoto "mantenendo" la dimensione logica iniziale, occorre a questo punto, "appendere" i dati, in quanto una scrittura diretta, "cancellerebbe" il salto di 680M.

    Sono andato fin troppo oltre le mie competenze, ma credo che per capirlo fino in fondo occorre conoscere come il filesystem gestisce i file e ne archivia le caratteristiche.

    ciao
    slack? smack!

  10. #10
    Utente di HTML.it L'avatar di n3uro
    Registrato dal
    Jun 2003
    Messaggi
    1,465
    Scusate.. ma a che può servire un file vuoto?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.