Як швидко створити великий файл?


26

Який швидкий та простий спосіб створити файл розміром 2 ГБ?

Відповіді:


36

Метод нульового заповнення (тут модифікований, щоб уникнути потенційних вузьких місць пам’яті ) знадобився 17 секунд, щоб створити файл на 10 ГБ на SSD і спричинив невідповідність графічного інтерфейсу Ubuntu.

$ time sh -c 'dd if=/dev/zero iflag=count_bytes count=10G bs=1M of=large; sync'
10240+0 records in
10240+0 records out
10737418240 bytes (11 GB, 10 GiB) copied, 17.2003 s, 624 MB/s

real    0m17.642s
user    0m0.008s
sys     0m9.404s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

fallocate створює великі файли миттєво, безпосередньо маніпулюючи виділеним дисковим простором файлу:

$ time sh -c 'fallocate -l 10G large; sync'

real    0m0.038s
user    0m0.000s
sys     0m0.016s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
10737422336     large

усікання також працює миттєво і створює розріджені файли, які не використовують фактичний дисковий простір, поки дані не будуть записані пізніше:

$ time sh -c 'truncate -s 10G large; sync'

real    0m0.014s
user    0m0.000s
sys     0m0.004s
$ du -B 1 --apparent-size large
10737418240     large
$ du -B 1 large
0       large

dd ... bs=2G count=1зчитує 2 Гб в пам'яті (за один read(2)дзвінок). Якщо у вас тиск пам'яті, можливо, це не шлях. Більше, менші блоки можуть бути швидшими, якщо це означає менше підкачки.
закріплення

19

Найпростішим способом було б використовувати ddкоманду для написання файлу, заповненого нулями.

dd if=/dev/zero of=outputFile bs=2G count=1
  • if = вхідний файл
  • = вихідний файл
  • bs = байти

Використовуйте G в аргументі розміру, якщо ви хочете комп'ютерних (1024 * 1024 * 1024) гігабайт або ГБ, якщо ви хочете людських (1000 * 1000 * 1000) гігабайт.


1
я просто додам, що якщо ви не хочете всіх нулів, ви можете вибрати, якщо = / dev / random
Denwerko

Хоча / dev / random буде потрібно більше часу.
con-f-use

10
Використання / dev / random займе дуже багато часу. Використовуйте /dev/urandomв цьому випадку (це не блокує, але не гарантується, що той самий рівень випадковості). Витягнення 2 Гб з будь-якого з них майже напевно повністю вичерпає ентропію вашої системи, тому не робіть нічого криптографічного на потім.
CVn

1

ftp://ftp.fsf.hu/testfiles/maketestfiles.sh

або Seek - розмір потрібного файлу в байтах - 1.

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1048575 # 1 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=10485759 # 10 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=104857599 # 100 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=1073741823 # 1024 MByte

dd if=/dev/zero of=filename.big bs=1 count=1 seek=42949672959 # 40960 MByte
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.