ນີ້ແມ່ນຄໍາສັ່ງ dictunzip ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator
ໂຄງການ:
NAME
dictzip, dictunzip - ບີບອັດ (ຫຼືຂະຫຍາຍ) ໄຟລ໌, ໃຫ້ການເຂົ້າເຖິງແບບສຸ່ມ
ສະຫຼຸບສັງລວມ
dictzip [ທາງເລືອກໃນການ] ຊື່
dictunzip [ທາງເລືອກໃນການ] ຊື່
ລາຍລະອຽດ
dictzip ບີບອັດໄຟລ໌ໂດຍໃຊ້ gzip(1) ສູດການຄິດໄລ່ (LZ77) ໃນລັກສະນະທີ່ເປັນ
ທີ່ເຫມາະສົມຢ່າງສົມບູນກັບ gzip ຮູບແບບໄຟລ໌. ການຂະຫຍາຍການ gzip ຮູບແບບເອກະສານ
(ຊ່ອງຂໍ້ມູນພິເສດ, ອະທິບາຍໄວ້ໃນ 2.3.1.1 ຂອງ RFC 1952) ອະນຸຍາດໃຫ້ເກັບຂໍ້ມູນເພີ່ມເຕີມຢູ່ໃນ
ສ່ວນຫົວຂອງໄຟລ໌ທີ່ຖືກບີບອັດ. ໂຄງການເຊັ່ນ gzip ແລະ zcat ຈະບໍ່ສົນໃຈຂໍ້ມູນພິເສດນີ້.
ຢ່າງໃດກໍຕາມ, dictd(8), ເຊີບເວີວັດຈະນານຸກົມ DICT protocol ຈະໃຊ້ຂໍ້ມູນນີ້ເພື່ອ
ດໍາເນີນການ pseudo-random ການເຂົ້າເຖິງໄຟລ໌. ໄຟລ໌ໃນ dictzip ຮູບແບບຄວນລົງທ້າຍດ້ວຍ ".dz"
ເພື່ອວ່າເຂົາເຈົ້າຈະໄດ້ຮັບການຈໍາແນກຈາກທົ່ວໄປ gzip ໄຟລ໌ທີ່ບໍ່ມີພິເສດ
ຂໍ້ມູນຫົວຂໍ້.
ຈາກ RFC 1952, ພາກສະຫນາມເພີ່ມເຕີມແມ່ນລະບຸໄວ້ດັ່ງຕໍ່ໄປນີ້:
ຖ້າບິດ FLG.FEXTRA ຖືກຕັ້ງ, "ຊ່ອງຂໍ້ມູນພິເສດ" ແມ່ນມີຢູ່ໃນສ່ວນຫົວ, ລວມທັງໝົດ.
ຄວາມຍາວ XLEN bytes. ມັນປະກອບດ້ວຍຊຸດຂອງ subfields, ແຕ່ລະຮູບແບບ:
+--+--+---+--+================================= =+
|SI1|SI2| LEN |... LEN bytes ຂອງຂໍ້ມູນ subfield ...|
+--+--+---+--+================================= =+
SI1 ແລະ SI2 ສະໜອງ ID ພາກສະຫນາມຍ່ອຍ, ໂດຍປົກກະຕິສອງຕົວອັກສອນ ASCII ທີ່ມີ mnemonic ບາງ.
ຄ່າ. Jean-Loup Gailly[email protected]> ແມ່ນການຮັກສາການຈົດທະບຽນຂອງ
subfield IDs; ກະລຸນາສົ່ງ ID ຊ່ອງຍ່ອຍໃດຫນຶ່ງທີ່ທ່ານຕ້ອງການນໍາໃຊ້ໃຫ້ເຂົາ. subfield IDs ກັບ
SI2 = 0 ແມ່ນສະຫງວນໄວ້ສໍາລັບການນໍາໃຊ້ໃນອະນາຄົດ.
LEN ໃຫ້ຄວາມຍາວຂອງຂໍ້ມູນ subfield, ບໍ່ລວມເອົາ 4 bytes ເບື້ອງຕົ້ນ.
ໄດ້ dictzip ໂຄງການໃຊ້ 'R' ສໍາລັບ SI1, ແລະ 'A' ສໍາລັບ SI2 (ie, "Random Access"). ຫຼັງຈາກ
ພາກສະຫນາມ LEN, ຂໍ້ມູນຖືກຈັດລຽງດັ່ງຕໍ່ໄປນີ້:
++--+--+---+--+---+---========================== ======+
| VER | CHLEN | CHNT | ... CHCNT ຄໍາສັບຂອງຂໍ້ມູນ ... |
++--+--+---+--+---+---========================== ======+
ອີງຕາມ RFC 1952, ຂໍ້ມູນທັງຫມົດຈະຖືກເກັບໄວ້ໂດຍ byte ຫນ້ອຍທີ່ສຸດກ່ອນ. ສໍາລັບ VER 1 ຂອງຂໍ້ມູນ,
ຄ່າທັງໝົດແມ່ນຍາວ 16 ບິດ (2 ໄບຕ໌), ແລະເປັນຈຳນວນເຕັມທີ່ບໍ່ໄດ້ເຊັນ.
XLEN (ທີ່ລະບຸໄວ້ກ່ອນໜ້ານີ້ຢູ່ໃນສ່ວນຫົວ) ເປັນຈຳນວນເຕັມສອງໄບຕ໌, ສະນັ້ນ ຊ່ອງຂໍ້ມູນພິເສດ
ສາມາດເປັນ 0xffff bytes ຍາວ, 2 bytes ທີ່ຖືກນໍາໃຊ້ສໍາລັບ subfield ID (SI1 ແລະ SI1), ແລະ
2 bytes ທີ່ຖືກນໍາໃຊ້ສໍາລັບຄວາມຍາວຂອງ subfield (LEN). ອັນນີ້ເຮັດໃຫ້ 0xffbb bytes (0x7ffd
ລາຍການ 2-byte ຫຼື 0x3ffe 4-byte entries). ເນື່ອງຈາກ buffer ຜົນຜະລິດ zip ຕ້ອງມີ 10% +
12 bytes ຂະຫນາດໃຫຍ່ກ່ວາ input buffer, ພວກເຮົາສາມາດເກັບຮັກສາ 58969 bytes ຕໍ່ entry, ຫຼືປະມານ 1.8GB.
ຖ້າລາຍການ 2-byte ຖືກໃຊ້. ຖ້າອັນນີ້ກາຍເປັນປັດໄຈຈໍາກັດ, ຮູບແບບອື່ນ
ສາມາດເລືອກແລະກໍານົດສໍາລັບລາຍການ 4-byte.
ສໍາລັບການບີບອັດ, ໄຟລ໌ໄດ້ຖືກແບ່ງອອກເປັນ "chunks" ຂອງຂໍ້ມູນ, ແຕ່ລະ chunk ແມ່ນຫນ້ອຍກ່ວາ
64kB, ແລະສາມາດຖືກບີບອັດເຂົ້າໄປໃນພື້ນທີ່ທີ່ມີຄວາມຍາວຫນ້ອຍກວ່າ 64kB (ໃຊ້ເວລາ.
incompressible ຂໍ້ມູນເຂົ້າໄປໃນບັນຊີ - ໂດຍປົກກະຕິຂໍ້ມູນແມ່ນໄດ້ຖືກບີບອັດເຂົ້າໄປໃນຕັນທີ່ເປັນ
ນ້ອຍກວ່າຂອງຕົ້ນສະບັບຫຼາຍ). ພາກສະຫນາມ CHLEN ກໍານົດຄວາມຍາວຂອງ "chunk" ຂອງ
ຂໍ້ມູນ. ຊ່ອງຂໍ້ມູນ CHCNT ກໍານົດຈໍານວນ chunks ທີ່ກໍານົດໄວ້ກ່ອນ, ແລະຄໍາສັບ CHCNT ຂອງຂໍ້ມູນ
ກໍານົດໄລຍະເວລາແຕ່ລະ chunk ຫຼັງຈາກການບີບອັດ (ie, ໃນໄຟລ໌ compressed ໃນປັດຈຸບັນ).
ເພື່ອປະຕິບັດການເຂົ້າເຖິງຂໍ້ມູນແບບສຸ່ມ, ການຊົດເຊີຍແລະຄວາມຍາວຂອງຂໍ້ມູນແມ່ນສະຫນອງໃຫ້
ປົກກະຕິຫ້ອງສະໝຸດ. ປົກກະຕິເຫຼົ່ານີ້ກໍານົດ chunk ທີ່ຂໍ້ມູນທີ່ຕ້ອງການເລີ່ມຕົ້ນ,
ແລະ decompresses chunk ນັ້ນ. chunks ຕິດຕໍ່ກັນແມ່ນ decompressed ຕາມຄວາມຈໍາເປັນ.
ການຄ້າ
ຄວາມໄວ ການເຂົ້າເຖິງໄຟລ໌ແບບສຸ່ມທີ່ແທ້ຈິງແມ່ນບໍ່ຮັບຮູ້, ນັບຕັ້ງແຕ່ການເຂົ້າເຖິງໃດໆ, ເຖິງແມ່ນວ່າສໍາລັບ byte ດຽວ,
ຮຽກຮ້ອງໃຫ້ມີ chunks 64kB ຖືກອ່ານແລະ decompressed. ນີ້ແມ່ນຊ້າກວ່າການເຂົ້າເຖິງ
ໄຟລ໌ຂໍ້ຄວາມແປ, ແຕ່ແມ່ນຫຼາຍ, ໄວກ່ວາການປະຕິບັດການເຂົ້າເຖິງ serial ໃນຢ່າງເຕັມທີ່
ໄຟລ໌ທີ່ຖືກບີບອັດ.
Space ສໍາລັບຖານຂໍ້ມູນວັດຈະນານຸກົມຂໍ້ຄວາມທີ່ພວກເຮົາກໍາລັງເຮັດວຽກກັບ, ການນໍາໃຊ້ 64kB chunks
ແລະການບີບອັດ LZ77 ສູງສຸດຈະຮັບຮູ້ໄຟລ໌ທີ່ມີຂະຫນາດໃຫຍ່ກວ່າພຽງແຕ່ປະມານ 4%.
ໄຟລ໌ດຽວກັນຖືກບີບອັດທັງໝົດໃນເວລາດຽວກັນ.
OPTIONS
-d or -- ບີບອັດ
ບີບອັດ. ນີ້ແມ່ນຄ່າເລີ່ມຕົ້ນຖ້າ executable ເອີ້ນວ່າ dictunzip.
-c or --stdout
ຂຽນຜົນໄດ້ຮັບກ່ຽວກັບຜົນຜະລິດມາດຕະຖານ; ຮັກສາໄຟລ໌ຕົ້ນສະບັບບໍ່ປ່ຽນແປງ. ນີ້ແມ່ນພຽງແຕ່
ສາມາດໃຊ້ໄດ້ໃນເວລາທີ່ decompressing (ເນື່ອງຈາກວ່າພາກສ່ວນຂອງ header ຕ້ອງໄດ້ຮັບການປັບປຸງຫຼັງຈາກ a
ຂຽນເມື່ອບີບອັດ).
-f or --ກຳລັງ
ບັງຄັບການບີບອັດຫຼືການບີບອັດເຖິງແມ່ນວ່າໄຟລ໌ຜົນຜະລິດມີຢູ່ແລ້ວ.
-h or - ຊ່ວຍ
ສະແດງການຊ່ວຍເຫຼືອ.
-k or --ຮັກສາ
ຢ່າລຶບໄຟລ໌ຕົ້ນສະບັບ.
-l or --ລາຍການ
ສໍາລັບແຕ່ລະໄຟລ໌ທີ່ຖືກບີບອັດ, ບອກຊ່ອງຂໍ້ມູນຕໍ່ໄປນີ້:
ປະເພດ: dzip, gzip, ຫຼືຂໍ້ຄວາມ (ລວມທັງໄຟລ໌ໃນຮູບແບບທີ່ບໍ່ຮູ້ຈັກ)
crc: CRC checksum
ວັນທີ ແລະເວລາ: ຈາກສ່ວນຫົວ
chunks: ຈໍານວນຂອງ chunks ໃນໄຟລ໌
ຂະຫນາດ: ຂະຫນາດຂອງແຕ່ລະ chunk uncompressed
compr.: ຂະໜາດບີບອັດ
uncompr.: uncompressed size
ອັດຕາສ່ວນ: ອັດຕາສ່ວນການບີບອັດ (0.0% ຖ້າບໍ່ຮູ້)
ຊື່: ຊື່ຂອງໄຟລ໌ທີ່ບໍ່ໄດ້ບີບອັດ
ບໍ່ມັກ gzip, ວິທີການບີບອັດບໍ່ໄດ້ຖືກກວດພົບ.
-L or -- ໃບອະນຸຍາດ
ສະແດງໃຫ້ເຫັນ dictzip ໃບອະນຸຍາດແລະອອກ.
-t or --ທົດສອບ
ກວດເບິ່ງຄວາມສົມບູນຂອງໄຟລ໌ທີ່ຖືກບີບອັດ. ທາງເລືອກນີ້ບໍ່ໄດ້ຖືກປະຕິບັດ. ແທນທີ່ຈະ, ມັນ
ຈະລາຍຊື່ຂໍ້ມູນສ່ວນຫົວ.
-v or -- verbose
ຄຳເວົ້າ. ສະແດງຂໍ້ມູນເພີ່ມເຕີມໃນລະຫວ່າງການບີບອັດ.
-V or - ການປ່ຽນແປງ
ຮຸ່ນ. ສະແດງຕົວເລກສະບັບແລະທາງເລືອກການສັງລວມຈາກນັ້ນອອກ.
-s ການເລີ່ມຕົ້ນ or --ເລີ່ມ ການເລີ່ມຕົ້ນ
ລະບຸຂໍ້ສະເໜີເພື່ອເລີ່ມການບີບອັດ, ໂດຍໃຊ້ຕົວເລກທົດສະນິຍົມ. ຄ່າເລີ່ມຕົ້ນຢູ່ທີ່
ຈຸດເລີ່ມຕົ້ນຂອງໄຟລ໌.
-e ຂະຫນາດ or --ຂະໜາດ ຂະຫນາດ
ລະບຸຂະຫນາດຂອງສ່ວນຂອງໄຟລ໌ທີ່ຈະບີບອັດ, ໂດຍໃຊ້ຕົວເລກທົດສະນິຍົມ.
ຄ່າເລີ່ມຕົ້ນແມ່ນໄຟລ໌ທັງຫມົດ.
-S ການເລີ່ມຕົ້ນ or --ເລີ່ມ ການເລີ່ມຕົ້ນ
ລະບຸຂໍ້ສະເໜີເພື່ອເລີ່ມການບີບອັດ, ໂດຍໃຊ້ຕົວເລກ base64. ຄ່າເລີ່ມຕົ້ນຢູ່ທີ່
ຈຸດເລີ່ມຕົ້ນຂອງໄຟລ໌.
-E ຂະຫນາດ or --ຂະໜາດ ການເລີ່ມຕົ້ນ
ລະບຸຂະຫນາດຂອງສ່ວນຂອງໄຟລ໌ທີ່ຈະບີບອັດ, ໂດຍໃຊ້ຕົວເລກ base64.
ຄ່າເລີ່ມຕົ້ນແມ່ນໄຟລ໌ທັງຫມົດ.
-p ຕົວຕື່ມ or --ກ່ອນ ຕົວຕື່ມ
ລະບຸຄໍາສັ່ງ shell ເພື່ອດໍາເນີນການເປັນຕົວກອງກ່ອນທີ່ຈະບີບອັດຫຼື decompression
ຂອງ chunk ເປັນ. ການກັ່ນຕອງກ່ອນແລະຫລັງການບີບອັດສາມາດຖືກນໍາໃຊ້ເພື່ອສະຫນອງ
ການບີບອັດເພີ່ມເຕີມຫຼືຮູບແບບຜົນຜະລິດ. ການກັ່ນຕອງອາດຈະບໍ່ເພີ່ມຂຶ້ນ
ຂະຫນາດ buffer ຢ່າງຫຼວງຫຼາຍ. ຕົວກອງກ່ອນ ແລະຫຼັງການບີບອັດໄດ້ຖືກອອກແບບເພື່ອ
ໃຫ້ການໂຕ້ຕອບທົ່ວໄປທີ່ສຸດທີ່ເປັນໄປໄດ້.
-P postfilter or --ໂພດ postfilter
ລະບຸຄໍາສັ່ງ shell ເພື່ອປະຕິບັດເປັນການກັ່ນຕອງຫຼັງຈາກການບີບອັດຫຼື decompression.
CREDITS
dictzip ຂຽນໂດຍ Rik Faith ([email protected]) ແລະຖືກແຈກຢາຍພາຍໃຕ້ເງື່ອນໄຂຂອງ
ໃບອະນຸຍາດສາທາລະນະທົ່ວໄປ GNU. ຖ້າທ່ານຕ້ອງການແຈກຢາຍພາຍໃຕ້ເງື່ອນໄຂອື່ນໆ, ຂຽນໄປທີ່
ຜູ້ຂຽນ.
ຫ້ອງສະຫມຸດຕົ້ນຕໍທີ່ໃຊ້ໂດຍໂຄງການນີ້ (zlib, regex, libmaa) ແມ່ນແຈກຢາຍພາຍໃຕ້
ຂໍ້ກໍານົດທີ່ແຕກຕ່າງກັນ, ດັ່ງນັ້ນທ່ານອາດຈະສາມາດນໍາໃຊ້ຫ້ອງສະຫມຸດສໍາລັບຄໍາຮ້ອງສະຫມັກທີ່ເປັນ
ບໍ່ເຂົ້າກັນໄດ້ກັບ GPL -- ກະລຸນາເບິ່ງແຈ້ງການລິຂະສິດ ແລະຂໍ້ມູນໃບອະນຸຍາດທີ່
ມາກັບຫ້ອງສະໝຸດສຳລັບຂໍ້ມູນເພີ່ມເຕີມ, ແລະປຶກສາກັບທະນາຍຄວາມຂອງທ່ານເພື່ອແກ້ໄຂ
ບັນຫາເຫຼົ່ານີ້.
ໃຊ້ dictunzip ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net