fallocate
, dd
, truncate
Bạn cần tạo một file có kích thước chính xác cho mục đích kiểm thử, test upload hoặc đơn giản là để lấp đầy không gian lưu trữ? Bài viết này sẽ hướng dẫn bạn các phương pháp hiệu quả nhất để tạo file với kích thước tùy ý trong môi trường Linux, sử dụng các công cụ mạnh mẽ như fallocate
, dd
và truncate
. Chúng ta sẽ đi sâu vào ưu nhược điểm của từng phương pháp và cách sử dụng chúng một cách tối ưu.
Việc tạo file với kích thước được xác định trước có thể hữu ích trong nhiều tình huống:
fallocate
Lệnh fallocate
là một công cụ hiệu quả để pre-allocate space (dự trữ không gian) cho một file. Đây là phương pháp nhanh nhất và được khuyến nghị, đặc biệt cho các file lớn. fallocate
không thực sự ghi dữ liệu vào file, mà chỉ đơn giản là "đánh dấu" không gian trên đĩa cứng là đã được sử dụng.
fallocate
Cú pháp đơn giản như sau:
fallocate -l <kích_thước> <tên_file>
-l
: Chỉ định kích thước file (length).<kích_thước>
: Kích thước mong muốn của file. Bạn có thể sử dụng các hậu tố như K
(kilobyte), M
(megabyte), G
(gigabyte).<tên_file>
: Tên của file bạn muốn tạo.fallocate
Để tạo một file có kích thước 1GB tên là test.img
, bạn dùng lệnh:
fallocate -l 1G test.img
Để tạo một file 100MB tên file.out
:
fallocate -l 100M file.out
dd
Lệnh dd
(data duplicator) là một công cụ đa năng có thể được sử dụng để copy và convert dữ liệu. Mặc dù không nhanh bằng fallocate
, dd
vẫn là một lựa chọn tốt, đặc biệt khi bạn muốn tạo file chứa dữ liệu (ví dụ: toàn số 0 hoặc dữ liệu ngẫu nhiên).
dd
Cú pháp thường dùng để tạo file bằng dd
là:
dd if=/dev/zero of=<tên_file> bs=<kích_thước_block> count=<số_block>
if=/dev/zero
: Chỉ định nguồn dữ liệu là /dev/zero
, một nguồn cung cấp các byte có giá trị 0.of=<tên_file>
: Tên của file bạn muốn tạo.bs=<kích_thước_block>
: Kích thước của mỗi block dữ liệu (block size).count=<số_block>
: Số lượng block dữ liệu cần ghi. Kích thước file sẽ là bs * count
.Hoặc bạn có thể sử dụng seek để tạo nhanh 1 file:
dd if=/dev/zero of=<tên_file> bs=1 count=0 seek=<kích_thước>
if=/dev/zero
: Chỉ định nguồn dữ liệu là /dev/zero
, một nguồn cung cấp các byte có giá trị 0.of=<tên_file>
: Tên của file bạn muốn tạo.bs=1
: Kích thước của mỗi block dữ liệu là 1 byte.count=0
: Số lượng block dữ liệu cần ghi là 0seek=<kích_thước>
: Số byte bỏ qua tính từ đầu file, tạo hiệu ứng "nhảy" đến vị trí cuối cùng. dd
Để tạo một file 10MB chứa toàn số 0 tên là test.img
:
dd if=/dev/zero of=test.img bs=1M count=10
Hoặc dùng seek
:
dd if=/dev/zero of=test.img bs=1 count=0 seek=10M
Để tạo file chứa dữ liệu ngẫu nhiên, bạn có thể sử dụng /dev/urandom
làm nguồn:
dd if=/dev/urandom of=random.img bs=1M count=5
Lưu ý: Dùng /dev/urandom
sẽ chậm hơn nhiều so với /dev/zero
.
truncate
Lệnh truncate
được sử dụng để thay đổi kích thước của một file hiện có hoặc tạo một file mới có kích thước chỉ định. Tương tự như fallocate
, truncate
có thể tạo sparse file (file thưa), không chiếm toàn bộ không gian đĩa cho đến khi dữ liệu thực sự được ghi vào.
truncate
Cú pháp như sau:
truncate -s <kích_thước> <tên_file>
-s
: Chỉ định kích thước file (size).<kích_thước>
: Kích thước mong muốn của file. Bạn có thể sử dụng các hậu tố như K
, M
, G
.<tên_file>
: Tên của file bạn muốn tạo.truncate
Để tạo một file 14MB tên là filename
:
truncate -s 14M filename
Sau khi tạo file, bạn có thể kiểm tra kích thước bằng các lệnh sau:
ls -lh <tên_file>
: Hiển thị kích thước file ở định dạng dễ đọc.du -h <tên_file>
: Hiển thị dung lượng đĩa thực tế mà file đang sử dụng.stat <tên_file>
: Hiển thị thông tin chi tiết về file, bao gồm kích thước.Bài viết này đã trình bày ba phương pháp chính để tạo file với kích thước bất kỳ trong Linux. fallocate
là lựa chọn nhanh nhất để dự trữ không gian, dd
hữu ích khi bạn cần tạo file có dữ liệu, và truncate
phù hợp để thay đổi kích thước file. Hãy chọn phương pháp phù hợp nhất với nhu cầu cụ thể của bạn. Chúc bạn thành công!
Bài viết liên quan