Hướng dẫn dùng lib zip trong PHP
Làm sao để thực hiện nén file .zip bằng PHP, bài viết này sẽ giới thiệu và hướng dẫn các bạn thực hiện nén file .zip bằng PHP một cách đơn giản. Show File nén ZiP là gì?File có phần mở rộng .zip hiện nay khá phổ biến và hiện nay được hỗ trợ ở hầu hết các hệ điều hành nếu không muốn nói là tất cả. File .zip là một dạng file nén dùng giảm dung lượng của một hay nhiều file mà nó chứa bên trong nhằm tối ưu khả năng lưu trữ, di chuyển và truyền tải trên Internet. Sự phổ biến của nó đến mức hiện nay “zip” được xem như một động từ. Ví dụ “Bạn zip file lại rồi gửi cho mình nhé” là một cách nói khá phổ biến cho hành động nén file để giảm dung lượng lưu trữ. Ngoài .zip bạn còn có nhiều định dạng khác cũng có chức năng tương tự như .rar , .7z nhưng .zip có lẽ là phổ biến nhất, được sử dụng nhiều nhất và hỗ trợ bởi nhiều hệ điều hành mà không cần cài đặt gì thêm. Nén (compress) file trong PHPTrong PHP, file .zip có thể tạo hoặc chính sửa thông qua một class được hỗ trợ sẵn là ZipArchive. Quá trình nén và đóng gói file nén sẽ kết thúc khi hàm close() hoặc destroyed() được gọi.
Kết quả Nén (compress) thư mục trong PHPNgoài nén file thường thì chúng ta rất cần nén thư mục để lưu hành, thực ra việc zip thư mục chỉ là chúng ta code quét tất cả các file trong thư mục và đưa vào file zip, ví dụ code dưới đây sẽ zip 1 thư mục lằm cùng với file thực thi
Tại đoạn code trên các bạn lưu ý các nội dung sau:
code này thiết lập thư mục cần nén, lưu ý file thực thi code này lằm cùng thư mục cần nén
code này sẽ thực hiện thêm từng file vào file zip, lưu ý là tham số $file là đường dẫn của file và phải tồn tại trên hệ thống
code này là thực hiện thiết lập mật khẩu cho file nén và ở đây mình đang set là 'HieuNT', $file là đường dẫn của file và như vậy với đoạn code trên các bạn đã dễ dàng thực hiện nén file dạng .zip kèm theo mật khẩu, nếu các bạn thực hiện mà không hoạt động được có thể liên hệ với chúng tôi để được hỗ trợ. zip là một định dạng nén phổ biến, được sử dụng để làm giảm dung lượng các định dạng file, để có thể dễ dàng gửi chúng đi nơi khác. PHP sử dụng class ZipArchive để hỗ trợ nén một hoặc nhiều file tới một file zip. zip là một định dạng nén phổ biến, được sử dụng để làm giảm dung lượng các định dạng file, để có thể dễ dàng gửi chúng đi nơi khác. PHP sử dụng class
ZipArchive để hỗ trợ nén một hoặc nhiều file tới một file zip. Tar, Gzip, Zip là các dạng đóng gói và nén dữ liệu cơ bản trong hệ thống Linux. Cụ thể, Tar dùng để đóng gói dữ liệu, Gzip nén dữ liệu và Zip có thể làm cả hai công việc. Nội dung chính
I. TarTar giúp đóng gói các files/thư mục vào trong 1 file, giúp ích rất nhiều cho việc sao lưu dữ liệu. Thông thường, Tar file có đuôi .tar. Để giảm tối đa kích thước tập tin, chúng ta cần thêm các tùy chọn nén gzip hoặc bunzip2. Tổng hợp các tùy chọn bao gồm
1. Tạo fie nén .tar# tar -cvf filename.tar file1 file2 folder1 folder2 Filename.tar là tên file tar bạn sẽ tạo ra. File1, folder1… là các file, thư mục bạn muốn đóng gói trong file tar (đóng gói theo đúng thứ tự liệt kê). Ví dụ, bạn đang làm việc tại /usr, cần đóng gói folder /usr/bin, folder /boot/grub và file /boot/abc.img # tar -cvf filename.tar bin /boot/grub /boot/abc.img File được lưu trữ có thể ở dạng filename (abc.img) hoặc ở dạng file kèm đường dẫn (boot/abc.img). Khi đó, trong quá trình bung dữ liệu, file sẽ được đặt ở đúng đường dẫn đã lưu. Đóng gói và nén dữ liệu Tar thông thường chỉ giúp đóng gói dữ liệu. Để nén dữ liệu giảm thiểu dung lượng, bạn dùng cần các tùy chọn nén # tar -czvf filename.tar.gz file1 file2 folder1 folder2 hoặc # tar -cjvf filename.tar.bz2 file1 file2 folder1 folder2 Lưu trữ bỏ qua các tập tin theo yêu cầu Trong quá trình đóng gói và lưu trữ dữ liệu, có thể loại bỏ các tập tin theo yêu cầu bằng cách sử dụng tùy chọn Ví dụ, loại bỏ các file .pyc khỏi việc đóng gói dữ liệu thư mục /usr/lib/python2.6/site-packages # tar -cvf filename.tar /usr/lib/python2.6/site-packages --exclude='*.pyc' Hiển thị tổng dung lượng đã được lưu trữ Sử dụng tùy chọn # tar -cvf filename.tar file1 folder1 --totals Total bytes written: 20561920 (20MiB, 354MiB/s) 2. Làm việc với file .tarLiệt kê nội dung bên trong file lưu trữ Để xem nội dung bên trong 1 file tar, sử dụng tùy chọn # tar -tvf filename.tar Thêm mới, cập nhập nội dung vào file lưu trữ Sử dụng tùy chọn # tar -rvf filename.tar add_file1 add_file2 Để cập nhập dữ liệu vào file lưu trữ đã có, sử dụng tùy chọn # tar -uf filename.tar Câu lệnh trên sẽ so sánh thời gian sửa đổi của nội dung bên ngoài và bên trong của file lưu trữ. File bên trong sẽ được cập nhật nếu tập tin bên ngoài mới hơn. Xóa dữ liệu trong file lưu trữ Sử dụng tùy chọn # tar -f filename.tar --delete file1 file2 3. Giải nén file .tar# tar -xvf filename.tar Câu lệnh trên sẽ không xóa file .tar mà sẽ chỉ giải nén dữ liệu bên trong file tar vào thư mục hiện tại. Trong trường hợp file được lưu có kèm đường dẫn, nếu đường dẫn đó không tồn tại, hệ thống sẽ tự tạo thư mục tương ứng để đặt file. Tùy theo cách bạn đóng gói dữ liệu mà khi bung ra vị trí file có thể thay đổi Ví dụ, bạn đang làm việc tại /boot/grub và muốn đóng gói file 1.map tại thư mục đó.
Bung file nén Đối với các file nén gzip .tar.gz bạn cần sử dụng thêm tùy chọn # tar -xzvf filename.tar.gz # tar -xjvf filename.tar.bz2 Bung một vài file/thư mục cụ thể # tar -xvf filename.tar file1 file2 Bung vào 1 thư mục khác Để bung dữ liệu vào nơi khác thư mục hiện tại, bạn cần chỉ rõ đường dẫn của thư mục đích với tùy chọn # tar -xvf filename.tar -C /directory Ví dụ, II. GzipGZIP được dùng khá phổ biến trong nền tảng Unix/Linux. GZIP chỉ có thể làm việc trên 1 tập tin hoặc 1 dòng dữ liệu, do đó không thể lưu trữ được nhiều tập tin. Vì vậy, nếu muốn sử dụng cho nhiều tập tin thì chúng ta phải sử dụng TAR đóng gói chúng lại trước. 1. Tạo file nén Gzip# gzip filename Khi đó, file gốc tự đổng chuyển đổi thành file nén. Ví dụ Thiết lập mức độ nén Mức độ nén được tùy chỉnh trong khoảng từ 1 đến 9. Trong đó, 1 ~ fast nén nhanh nhất nhưng mức độ nén thấp nhất còn 9 ~ best mức độ nén cao nhất nhưng nén chậm nhất # gzip --fast filename hoặc # gzip -1 filename # gzip --best filename hoặc # gzip -9 filename Kiểm tra thuộc tính file nén # gzip -l filename.gz Ví dụ, # gzip -l hocvps.tar.gz compressed uncompressed ratio uncompressed_name 23724096 64901120 63.4% hocvps.tar 2. Giải nén file Gzip# gzip -d filename Khi đó, file nén tự động chuyển đổi thành file gốc. Ví dụ, III. ZipĐầu tiên, bạn cần kiểm tra cài đặt zip trong systems. # rpm -q zip package zip is not installed hoặc Package zip-3.0-1.el6_7.1.x86_64 already installed and latest version Tiến hành cài đặt Zip nếu chưa có # yum install zip -y Installed: zip.x86_64 0:3.0-1.el6_7.1 1. Tạo file nén .zip# zip filename.zip filename1 filename2 Trong đó, filename.zip là file zip sẽ được tạo từ việc nén filename1 và filename2 Nén folder thành 1 file zip Sử dụng tùy chọn # zip -r test.zip folder1 Tạo file nén ở chế độ yên lặng Sử dụng tùy chọn # zip -rq test.zip folder 2. Giải nén file .zip# unzip filename.zip Khi đó, file trong filename.zip sẽ được giải nén vào thư mục hiện tại, file nén vẫn giữ nguyên [y]es, [n]o, [A]ll, [N]one, [r]ename Giải nén ở chế độ yên lặng Sử dụng tùy chọn # unzip -q test.zip |