Định dạng lưu trữ không được nhận dạng khi cố gắng trích xuất nội dung từ kho lưu trữ TAR


0

Tôi có một tệp TAR không nén được tạo trên Linux.

Nếu tôi sử dụng less để xem tập tin tôi có thể xem tất cả dữ liệu; chủ yếu là các tập tin mã. Tuy nhiên nếu tôi cố gắng giải nén thì tôi gặp phải lỗi sau:

tar: Lỗi định dạng lưu trữ không được công nhận.

Nếu tôi làm một file thetarfile.tar Tôi nhận được dữ liệu loại.

Làm thế nào tôi có thể giải nén các tập tin?


Bạn đang sử dụng lệnh nào để giải nén nó? Lưu ý tar không phải là định dạng nén, nó là định dạng lưu trữ - dữ liệu được lưu trữ cùng kích thước với gốc.
Paul

Tôi đang thử với tarfile.tar tar -xvf này
Jens

Làm tar tf tarfile.tar liệt kê các tập tin dự kiến ​​trong tar?
Paul

Không nó không. Tôi cũng bị lỗi
Jens

Khi bạn nói rằng bạn có thể xem dữ liệu, bạn có nghĩa là bạn có thể thấy các tập tin php script ở dạng văn bản thuần túy? Tôi đoán là sao lưu thất bại từ Drupal và vì vậy nó không được công nhận là một tar phù hợp.
Paul

Câu trả lời:


0

Bạn có thể cố gắng lưu những gì vẫn có thể với tiện ích cpio.
( GNU cpio sao chép các tập tin vào hoặc ra khỏi kho lưu trữ cpio hoặc tar ... )

Lệnh dưới đây sẽ thực hiện công việc trích xuất các tệp và tạo lại cây thư mục:

      cpio -ivd -H tar < myfile.tar 

Ps & gt; Làm việc ở một nơi an toàn (thư mục).

Chi tiết:

  • -i hoặc là --extract Chạy vào chế độ sao chép .
  • -d hoặc là --make-directories Tạo thư mục hàng đầu khi cần thiết.
    (theo mặc định nó không tạo thư mục)
  • -v hoặc là --verbose như thường viết thêm thông tin, lần này nó liệt kê các tệp được xử lý.
  • -H format hoặc là --format=format Sử dụng định dạng lưu trữ định dạng .

Tiếp tục:
nó là hầu hết hoàn thành tar tập tin. Nó không có số ma thuật trong tiêu đề, nó có chữ ký chung kết. Ngoài ra, bạn có thể đọc phần có tệp văn bản (khi bạn sử dụng ít hơn) để không bị nén. Nó bị hỏng. Tại sao (nếu máy chủ không hoàn thành công việc hoặc nó được chuyển bị hỏng một số phần) là thứ yếu. Nếu bạn có thể tạo lại nó thì tốt hơn. Nếu không, bạn có thể thử những gì ở trên hoặc dưới ...

Tài liệu tham khảo:
Bạn có thể tìm sự giúp đỡ trên trang web của cpio hoặc trên trang web mac quá.
Đầy danh sách tùy chọn


Lựa chọn thay thế:

  • Tiếp theo điều này bài đăng và tải cái này kịch bản perl , sau đó bạn giải nén nó (với bunzip2 find_tar_headers.pl.bz2 ) bạn co thể sử dụng no:

    perl find_tar_headers.pl yourfile.tar
    

    nó sẽ trả lời với một loạt các dòng như

    yourfile.tar: 12345 : dir / subir / yourfile: 126344
    yourfile.tar: 20578: dir / subir / yourfile: 123453 ...

    đọc số 1, trong trường hợp này 12345 và những gì sau đây sẽ giải quyết vấn đề của bạn

    tail -c +12345 yourfile.tar > extracted_tail_yourfile.tar
    tar xf extracted_tail_yourfile.tar
    
  • 75 73 74 61 72 00 30 30 hoặc là 75 73 74 61 72 20 20 00 là chữ ký cho một tập tin tar. (tùy thuộc vào danh sách này ). Bạn có thể viết một trong số chúng ở phần bù 256 trên một bản sao của tệp bằng trình soạn thảo thập lục phân hoặc với dd và nó sẽ được công nhận là một tar tập tin. Có lẽ bạn cũng sẽ có thể trích xuất một cái gì đó, nhưng nó sẽ vẫn bị hỏng : sẽ tốt hơn nếu bạn có thể tạo lại nó.


1

Chỉ vì một tệp có hậu tố tar hoặc tgz không biến nó thành tệp tar.

Bạn có thể kiểm tra số ma thuật trong tiêu đề tệp bằng lệnh tệp:

file myfile

Và nó sẽ báo cáo loại tập tin. Nó có thể là định dạng zip, định dạng bzip hoặc thậm chí cpio.

Nếu nó trả về "dữ liệu" thì nó có thể không phải là một kho lưu trữ đã biết hoặc hoàn toàn không phải là một kho lưu trữ.


Vâng, nó trả về dữ liệu như tôi đã viết trong câu hỏi của mình. Tôi có thể xem tất cả nội dung của các tệp nếu tôi xem tệp ít hơn.
Jens

tar và cpio chỉ là các định dạng được tiêu chuẩn hóa để kết hợp các tệp vào một kho lưu trữ duy nhất. Một lập trình viên có thể tự do tạo định dạng của riêng họ, và đây có thể là những gì bạn đang thấy. Một kho lưu trữ định dạng tùy chỉnh. Trừ khi bạn có thể id chương trình nào tạo ra kho lưu trữ, bạn có thể không gặp may. Yêu cầu lưu trữ khác trong một định dạng tiêu chuẩn.
AngelaS

Chương trình là mô-đun Sao lưu và Di chuyển trong Drupal. Tôi có 2 tệp tar khác của hai trang web khác trên cùng một máy chủ. Đây là những hoạt động bình thường.
Jens

0

Nó có thể là một số điều khiến TAR bị coi là tham nhũng. Nếu nó là một kho lưu trữ đã hoàn thành một phần thì đơn giản là nó sẽ không hoàn thành nhưng ít nhất là không TAR đến một điểm. Nếu file thetarfile.tar Trả về dữ liệu của Nhật Bản có thể đó là một kho lưu trữ nén?

Một ý tưởng là để xem có lẽ có một số loại vấn đề trở lại / ngắt dòng xe Và điều đó có thể được giải quyết thông qua dos2unix, một tiện ích trong Linux / Unix có thể chuyển đổi trả lại dòng / ngắt dòng thành các ngắt tương thích với Linux. Để sử dụng nó chỉ cần làm điều này như sau.

Đầu tiên, cài đặt dos2unix. Không rõ hệ thống nào bạn đang cố gắng thực hiện trên hệ thống này, nhưng trong Ubuntu bạn có thể chạy hệ thống này aptitude lệnh để cài đặt nó từ một kho lưu trữ:

sudo aptitude install dos2unix 

Bây giờ tạo một bản sao của bản gốc .tar để kiểm tra nó như thế này:

cp tarfile.tar tarfile_TEST.tar

Bây giờ với dos2unix chỉ cần chạy lệnh này:

dos2unix tarfile_TEST.tar

Đầu ra sẽ giống như thế này:

dos2unix: converting file tarfile_TEST.tar to UNIX format ...

Sau đó thử giải nén nội dung của tệp TAR như thế này:

tar -xf tarfile_TEST.tar

Bây giờ nếu bạn cần cài đặt dos2unix trong Mac OS X, có là những lời khuyên ở đây về cách xử lý điều đó . Nhưng tất cả điều này là một linh cảm về phía tôi; don lồng xuống quá sâu xuống lỗ thỏ lý thuyết này trừ khi nó cho thấy nó là một giải pháp thực sự.

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.