Chuyển dữ liệu khi Hosting bị đầy 100%: Cách dùng Wget thay thế FTP truyền thống qua Termial

Chắc hẳn anh em làm web không lạ gì cảnh khách hàng nhắn tin: “Em ơi clone thêm cho anh cái web nhé” hoặc “Chuyển web này sang host mới giúp anh!”. Hí hửng vào kiểm tra thì hỡi ôi: Disk Usage: 90%.

Bình thường, quy trình chuyển host (migrate) chuẩn sách giáo khoa là:

  1. Vào File Manager host cũ.
  2. Nén (Zip) toàn bộ code.
  3. Tải về hoặc đẩy sang host mới.
  4. Giải nén.

Nhưng vấn đề nằm ở bước 1. Để nén được folder public_html nặng 5GB, bạn cần ít nhất 5GB dung lượng trống để chứa file .zip được tạo ra. Nhưng hosting đã đầy 100% (thậm chí là lố vạch đỏ), hệ thống sẽ báo lỗi “Disk quota exceeded” ngay lập tức. Không thể nén, không thể ghi thêm file, thậm chí không thể cài plugin backup.

Để duy trì blog nên mình có làm aff cho 1 số bên hosting. Nhưng dù aff mình cũng chọn 1 số nhà cung cấp uy tín về chất lượng và support nên các bạn cứ yên tâm nhé.

Nếu có mua hosting mà có trong list dưới đây các bạn click vào link trước khi mua để ủng hộ mình nhé. Mình cảm ơn nhiều

Vậy làm sao để mang đống dữ liệu đó sang nhà mới? Tải từng file qua FTP thì quá lâu và hay rớt mạng. Đây là lúc chúng ta cần đến sức mạnh của Terminal và lệnh Wget.

Giải pháp: Wget Đệ quy (Recursive)

Thay vì cố gắng tạo file nén trên host cũ, chúng ta sẽ đứng từ host mới và “hút” từng file từ host cũ về thông qua giao thức FTP.

Công cụ mình sử dụng là Wget – một trình tải xuống bằng dòng lệnh có sẵn trên hầu hết các Linux Hosting (cPanel). Tính năng “ăn tiền” nhất ở đây là cờ -m (mirror), giúp Wget tự động mò vào từng thư mục con để tải file về, giống như soi gương (mirror) cấu trúc thư mục của host cũ vậy.

Ưu điểm:

  • Không tốn 1 byte dung lượng nào ở host cũ (do không cần nén).
  • Tốc độ cực nhanh (Server kéo Server).
  • Không cần treo máy tính cá nhân.

Hướng dẫn thực hiện

Yêu cầu:

  • Host cũ (A): Cần có thông tin tài khoản FTP (IP, Username, Password).
  • Host mới (B): Cần truy cập được Terminal trong cPanel.

Bước 1: Chuẩn bị ở Host mới Đăng nhập vào cPanel của Host mới, tìm mục Terminal (thường nằm trong phần Advanced). Di chuyển đến thư mục bạn muốn chứa code (thường là public_html):

cd public_html

Bước 2: Chạy lệnh Wget thần thánh Sử dụng câu lệnh sau (nhớ thay thế thông tin của bạn vào):

wget -m --ftp-user=USER_FTP_CU --ftp-password="MAT_KHAU_FTP_CU" ftp://IP_HOST_CU/public_html/

Giải thích các tham số:

  • wget: Gọi chương trình.
  • -m (Mirror): Kích hoạt chế độ “soi gương”, tự động tải đệ quy toàn bộ thư mục và giữ nguyên thời gian sửa đổi (timestamp) của file.
  • --ftp-user: Tên đăng nhập FTP host cũ.
  • --ftp-password: Mật khẩu FTP host cũ.
  • ftp://...: Đường dẫn đến thư mục cần lấy.

Bước 3: Ngồi uống cafe và đợi Sau khi Enter, màn hình Terminal sẽ chạy liên tục, hiển thị từng file đang được tải về. Tốc độ giữa các Datacenter thường rất nhanh nên bạn sẽ thấy nó bay vèo vèo.

Sau khi chạy xong, bạn sẽ thấy một thư mục mới có tên trùng với IP hoặc Domain của host cũ. Bạn chỉ cần vào đó, chọn tất cả (Select All) và di chuyển (Move) ra public_html là xong.

Một số lưu ý xương máu

  1. Mật khẩu có ký tự đặc biệt: Nếu mật khẩu FTP của bạn có các ký tự như ! @ # $, hãy đặt nó trong dấu ngoặc kép hoặc encode nó, nếu không lệnh sẽ bị lỗi cú pháp.
  2. File ẩn (.htaccess): Đôi khi Wget bỏ qua các file ẩn. Sau khi tải xong, hãy kiểm tra kỹ xem file .htaccess đã qua chưa. Nếu chưa thì copy thủ công nội dung sang nhé.
  3. Database: Vì file SQL thường nén lại rất nhẹ, bạn vẫn có thể Export Database từ phpMyAdmin của host cũ về máy tính rồi Import sang host mới như bình thường.

Kết luận

Trong cái khó ló cái khôn. Việc hiểu biết thêm một chút về các dòng lệnh Linux (Command Line) thực sự giúp ích rất nhiều cho anh em Coder/Webmaster trong các tình huống “ca khó” như thế này.

Hy vọng bài viết này giúp anh em xử lý gọn gàng các case chuyển host bị full disk. Nếu thấy hữu ích, hãy chia sẻ cho mọi người cùng biết nhé!

Từ khóa: ,
  • Bình luận
Sản phẩm nổi bật của Toản
x