Làm cách nào để sao lưu (WSL) Hệ thống con Linux cho Windows 10, trước khi thiết lập lại hoặc cài đặt lại hệ thống?


24

Vấn đề của tôi là tôi phải đặt lại hoặc cài đặt lại các cửa sổ vì một số vấn đề nhưng tôi đã dành nhiều thời gian để định cấu hình WSL để phát triển và không muốn mất nó.

Có cách nào sao lưu toàn bộ WSL với các cài đặt và cài đặt mô-đun, plugin, người dùng, v.v. và khôi phục nó sau khi đặt lại hoặc cài đặt lại các cửa sổ không? Tôi đã tìm kiếm rất nhiều chủ đề này nhưng tôi không thể tìm thấy bất kỳ thông tin hữu ích.

Mặt khác, nếu không có cách nào để sao lưu, thiết lập lại windows 10 sẽ xóa WSL hoàn toàn?


Tôi sẽ tưởng tượng, nó chỉ đơn giản là sao lưu , %USERPROFILE%/AppData/Local/lxss. Bạn đã thử chưa?
Ramhound

Vâng, tôi đã thử, nhưng nó chỉ hoạt động một phần với rất nhiều lỗi.
emipac

Câu trả lời:


15

Làm thế nào để sao lưu?

Bất kỳ cách nào, nhưng một cách thông thường là sử dụng tar để tạo một kho lưu trữ các tệp bạn muốn sao lưu (để cài đặt lại mọi thứ khi bạn tạo lại môi trường của mình). Viết một backup.shkịch bản đơn giản sẽ giúp dễ dàng sao lưu nhiều lần theo lịch trình thông thường.

Sao lưu cái gì?

Hầu hết cấu hình của bạn được lưu trữ trong các tệp Linux .___, thường trong thư mục ~ / của bạn. Bạn cũng có thể muốn sao lưu /etc/ssh/ssh_configcác tệp cấu hình hệ thống tương tự của mình và các tệp cấu hình hệ thống tương tự khác, tuy nhiên, hãy cẩn thận với các tệp cấu hình phức tạp có chứa các khóa / dữ liệu cụ thể theo thể hiện.

Bạn có thể tạo danh sách gói apt bằng cách sử dụng dpkg-query -f '${binary:Package}\n' -Wvà có thể lặp lại thành một tệp mà bạn cũng có thể sao lưu.

Sao lưu vào đâu?

Sau đó, bạn có thể sao chép các tài liệu lưu trữ tar này sang một vị trí riêng biệt. Chúng tôi khuyên bạn nên sao chép vào thư mục có thể truy cập Windows (ví dụ:/mnt/c/backups ) từ đó bạn có thể sao chép nó vào OneDrive, DropBox, ổ cứng gắn ngoài, FTP ở nơi khác, v.v.

HTH.


21

Windows 10 v1903 bao gồm lệnh xuất / nhập WSL tích hợp . Cụ thể, wsl --exportsản xuất một tarwsl --import, nhập khẩu một xuất khẩu trước đótar . Sau đó bạn có thể di chuyển tệp này giữa các máy tính.

Bạn cũng có thể chỉ định stdin / stdout với -, điều này sẽ cho phép bạn chuyển trực tiếp sang máy khác và nhập bằng cách sử dụng shell từ xa ssh.


wsl --importcũng có thể nhập tar.gztập tin. Những lệnh này khởi chạy nội bộ %SystemRoot%\System32\lxss\tools\bsdtarnhị phân ELF64.
Biswapriyo

giai thoại, để giúp những người có khuynh hướng lo lắng: wsl --exportcó thể mất nhiều thời gian hơn bạn mong đợi. Trên máy của tôi, nó chỉ mất khoảng 10 phút khi chỉ viết được vài megabyte, sau đó cuối cùng đã viết ra một tệp tar 3,2 GB.
xem xét

2

Để sao lưu và khôi phục bản phân phối linux WSL hoàn chỉnh, bạn có thể thử (1) tạo một .tar.gzvới hệ thống tệp của mình và (2) khôi phục bản sao bằng một số công cụ cài đặt có sẵn trên Internet:

  • LxRunPackline có các tùy chọn để sao chép và cài đặt các bản phân phối linux tùy chỉnh. Bạn có thể cài đặt một bản phân phối từ một .tar.gztập tin.
  • WSL-DistroLauncher cho phép bạn cài đặt bản phân phối từ a rootfs.tar.gz.
  • WSLInstall , một trình cài đặt linux khác cho WSL.

Tạo bản sao lưu

Dựa trên báo cáo sự cố , bạn có thể tạo bản sao lưu bằng tarWSL. Lưu ý rằng bạn phải bỏ qua một số thư mục (ví dụ / mnt) trong bản sao.

# cd /
# tar vzcpf /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.tar.gz --exclude=/proc --exclude=/dev --exclude=/mnt --exclude=/media --exclude=/lost+found  --exclude=/tmp --exclude=/sys  --exclude=/run / > /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.log 2> /mnt/c/tmp/ubuntu_`date +%Y%m%d_%H`.error

Bạn phải tạo hoặc di chuyển tệp sao lưu vào /mnt/cthư mục con hợp lệ . Trong ví dụ này, các tệp được tạo vào /mnt/c/tmp.


Khôi phục bằng lxRun Offerline

Sử dụng lxRunPackline , bạn có thể cài đặt tar kết quả dưới dạng phân phối mới trong WSL bằng dòng lệnh Windows.

# lxrunoffline install -n <distro name> -d <installation folder> -f <file>
C:\wsl> lxrunoffline install -n mybackup -d c:\wsl\mybackup -f c:\tmp\ubuntu_20180729_00.tar.gz

Để chạy bản sao lưu, bạn có thể sử dụng cùng lxRun Offerline

# lxrunoffline run -n <distro name> -w
C:\wsl> lxrunoffline run -n mybackup  -w

Khôi phục bằng cách sử dụng DistroLauncher

Có nhiều trình khởi chạy cho các bản phân phối linux dựa trên ví dụ của Microsoft . Tôi nghĩ bạn có thể thử phiên bản Yuk7 .

Bạn phải tải xuống một tệp phân phối và launcher.exe. Để sử dụng cùng một tệp phân phối được đề cập ở trên, bạn phải đổi tên tệp sao lưu thành rootfs.tar.gzvà trình khởi chạy thành tên phân phối mà bạn muốn. Sau đó, bạn phải chạy launcher với tư cách Quản trị viên (Tôi gặp lỗi khi chạy nó như một người dùng bình thường)

c:\wsl> ren launcher.exe mybackup.exe
c:\wsl> ren .\ubuntu_20180729_00.tar.gz rootfs.tar.gz
c:\wsl> .\mybackup.exe

Lần đầu tiên bạn chạy launcher, nó sẽ cài đặt và chạy bản phân phối. Lần sau, nó chạy bản phân phối linux.


Cảm ơn bạn! - Trình khởi chạy wsdl của Yuk7 liên tục thất bại khi khởi chạy và tôi không thấy vấn đề lxRun Offerline. Đây là nơi duy nhất tôi tìm thấy ghi lại lệnh tar chính xác đã khắc phục sự cố wsldl của tôi.
AndrewD

0

Mặc dù câu trả lời của Jaime là hoàn hảo, nhưng bằng cách nào đó, /tmpthư mục không được tạo lại khi launcher.exe được sử dụng để cài đặt bóng tar (Tôi đặc biệt nói về việc di chuyển cài đặt WSL từ máy này sang máy khác).

Vì vậy, người ta phải tạo /tmpvà gán quyền yêu cầu.

Cách tiếp cận hiệu quả với tôi là:

https://www.cyberciti.biz/faq/mysqld-innodb-error-unable-to-create-t tạm-file /

# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start
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.