Làm thế nào để nối dữ liệu trong một tập tin bằng dd?


19

Tôi muốn nối thêm dữ liệu mới trong một tệp được lưu trữ trong SSD.

dd if=/dev/shm/test of=/data/sdb/test bs=1G oflag=append

Nhưng df -h cho thấy lệnh dd luôn ghi đè lên tệp thử nghiệm, thay vào đó sẽ nối thêm dữ liệu mới trong tệp thử nghiệm. Tôi cũng đã thử

dd if=/dev/shm/test of=/data/sdb/test bs=1G conv=notrunc

Nó cũng không hoạt động.

Câu trả lời:


12

Thế còn:

 dd if=/dev/shm/test bs=1G >>/data/sdb/test

giải pháp của bạn hoạt động. Cảm ơn. Nhưng bạn có biết tại sao các giải pháp của tôi không hoạt động? Tôi đã kiểm tra trang người đàn ông. không thể tìm thấy lý do. cảm ơn.
thành phố


1

Trong Linux kernel FALLOC_FL_INSERT_RANGEtùy chọn 4.1 đã được thêm vào. Từ fallocate(2) trang nam :

Việc chỉ định cờ FALLOC_FL_INSERT_RANGE (có sẵn từ Linux 4.1) trong chế độ sẽ tăng không gian tệp bằng cách chèn một lỗ trong kích thước tệp mà không ghi đè lên bất kỳ dữ liệu hiện có nào. Lỗ sẽ bắt đầu ở offset và tiếp tục cho các byte len. Khi chèn lỗ bên trong tệp, nội dung của tệp bắt đầu ở phần bù sẽ được dịch chuyển lên trên (nghĩa là phần bù tệp cao hơn) bằng các byte len. Chèn một lỗ bên trong tệp làm tăng kích thước tệp bằng len byte.

Và gần đây, hỗ trợ tùy chọn này đã được thêm vào util-linux:

   -i, --insert-range
          Insert a hole of length bytes from offset, shifting existing
          data.

Vì vậy, khi util-linuxphiên bản 2.30 được phát hành và bản phân phối linux của bạn sẽ cập nhật lên phiên bản này, chúng tôi sẽ có thể tăng kích thước tệp trong nháy mắt bằng cách chạy:

fallocate -i -l 1G -o 128M /path/to/file

128Mkích thước tập tin hiện tại ở đâu .


1

Có một cách dễ dàng hơn để nối một lỗ thưa thớt vào một tệp.

truncatenhanh hơn nhiều so với dd. Để phát triển tệp có 10 byte, hãy sử dụng:

 truncate -s +10 file.txt 

câu trả lời được tìm thấy trong: /server//a 4323726/70242

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.