Bagaimana cara membuat cadangan (WSL) Linux Subsystem untuk Windows 10, sebelum sistem diatur ulang atau diinstal ulang?

24

Masalah saya adalah bahwa saya harus mengatur ulang atau menginstal ulang windows karena beberapa masalah tetapi saya menghabiskan banyak waktu untuk mengkonfigurasi WSL untuk pengembangan dan tidak ingin kehilangan itu.

Apakah ada cara untuk mencadangkan seluruh WSL dengan pengaturan dan modul yang terpasang, plugin, pengguna dll dan mengembalikannya setelah mengatur ulang atau menginstal ulang windows? Saya mencari banyak topik ini tetapi saya tidak dapat menemukan informasi yang berguna.

Kalau tidak, jika tidak ada cara untuk membuat cadangan, apakah reset Windows 10 akan menghapus WSL sepenuhnya?

emipac
sumber
Saya akan membayangkan, itu hanya sebagai cadangan %USERPROFILE%/AppData/Local/lxss,. Sudahkah Anda mencobanya?
Ramhound
Ya, saya sudah mencoba, tetapi hanya berfungsi sebagian dengan banyak kesalahan.
emipac

Jawaban:

15

Bagaimana cara membuat cadangan?

Ada banyak cara, tetapi satu praktik umum adalah dengan menggunakan tar untuk membuat arsip file yang ingin Anda backup (untuk menginstal ulang semuanya ketika Anda membuat ulang lingkungan Anda). Menulis backup.shskrip sederhana akan membuatnya lebih mudah untuk membuat cadangan berulang kali pada jadwal reguler.

Apa yang akan dicadangkan?

Sebagian besar konfigurasi Anda disimpan di Linux .___ file konfigurasi, sering di folder ~ / Anda. Anda mungkin juga ingin membuat cadangan/etc/ssh/ssh_config file konfigurasi sistem dan yang serupa lainnya, namun berhati-hatilah dengan file konfigurasi kompleks yang berisi kunci / data / instance / instance khusus.

Anda dapat membuat daftar paket apt Anda menggunakandpkg-query -f '${binary:Package}\n' -W dan bisa gema menjadi file yang Anda juga dapat membuat cadangan.

Ke mana mencadangkan?

Anda kemudian dapat menyalin arsip tar ini ke lokasi yang terpisah. Kami merekomendasikan menyalin ke folder yang dapat diakses Windows (mis/mnt/c/backups ) Dari mana Anda dapat menyalinnya ke OneDrive, DropBox, HDD eksternal, FTP di tempat lain, dll.

HTH.

Richard Turner
sumber
21

Windows 10 v1903 mencakup perintah ekspor / impor WSL bawaan . Secara khusus,, wsl --exportyang menghasilkan a tardan wsl --import, yang mengimpor yang sebelumnya diekspor tar. Anda kemudian dapat memindahkan file ini di antara komputer.

Anda juga dapat menentukan stdin / stdout dengan -, yang seharusnya memungkinkan Anda untuk langsung mentransfer ke komputer lain dan mengimpor menggunakan shell seperti remote ssh.

Bob
sumber
wsl --importjuga dapat mengimpor tar.gzfile. Perintah-perintah itu secara internal meluncurkan %SystemRoot%\System32\lxss\tools\bsdtarbiner ELF64.
Biswapriyo
anecdata, untuk membantu mereka yang memiliki kecenderungan gugup: wsl --exportmungkin membutuhkan waktu lebih lama dari yang Anda harapkan. Di mesin saya, itu kira-kira 10 menit setelah menulis hanya beberapa megabyte, kemudian akhirnya menulis file tar 3,2 GB.
scruss
2

Untuk mencadangkan dan mengembalikan distribusi linux WSL yang lengkap, Anda dapat mencoba (1) membuat .tar.gzdengan sistem file Anda dan (2) mengembalikan salinan menggunakan beberapa alat penginstal yang tersedia di Internet:

  • LxRunOffline memiliki opsi untuk menduplikasi dan menginstal distribusi linux khusus. Anda dapat menginstal distro dari .tar.gzfile.
  • WSL-DistroLauncher memungkinkan Anda untuk menginstal distribusi dari a rootfs.tar.gz.
  • WSLInstall , penginstal linux lain untuk WSL.

Membuat cadangan

Berdasarkan laporan masalah , Anda dapat membuat cadangan menggunakan tarWSL. Perhatikan bahwa Anda harus mengabaikan beberapa folder (misalnya / mnt) dalam salinan.

# 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

Anda harus membuat, atau memindahkan nanti, file cadangan ke dalam /mnt/csubfolder yang valid . Dalam contoh tersebut, file dibuat ke dalam /mnt/c/tmp.


Mengembalikan menggunakan lxRunOffline

Menggunakan lxRunOffline , Anda dapat menginstal tar yang dihasilkan sebagai distribusi baru di WSL menggunakan baris perintah 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

Untuk menjalankan pencadangan, Anda dapat menggunakan lxRunOffline yang sama

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

Mengembalikan menggunakan DistroLauncher

Ada banyak peluncur untuk distribusi linux berdasarkan contoh Microsoft . Saya pikir Anda dapat mencoba versi Yuk7 .

Anda harus mengunduh file distribusi dan file launcher.exe. Untuk menggunakan file distribusi yang sama yang disebutkan di atas, Anda harus mengganti nama file cadangan rootfs.tar.gzdan peluncur ke nama distribusi yang Anda inginkan. Kemudian, Anda harus menjalankan peluncur sebagai Administrator (saya mendapat kesalahan saat menjalankannya sebagai pengguna biasa)

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

Pertama kali Anda menjalankan peluncur, ia menginstal dan menjalankan distribusi. Lain kali, ia menjalankan distribusi linux.

Jaime
sumber
Terima kasih! - Peluncur wsdl Yuk7 terus gagal saat diluncurkan, dan saya tidak melihat masalah lxRunOffline. Ini adalah satu-satunya tempat saya menemukan yang mendokumentasikan perintah tar yang benar yang memperbaiki masalah wsldl saya.
AndrewD
0

Sementara jawaban Jaime sempurna, entah bagaimana /tmpfolder itu tidak diciptakan kembali ketika launcher.exe digunakan untuk menginstal bola tar (saya secara khusus berbicara tentang memindahkan instalasi WSL dari satu mesin ke mesin lain).

Jadi seseorang harus membuat /tmpdan menetapkan hak yang diperlukan.

Satu pendekatan yang berhasil bagi saya adalah:

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

# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start
Rajesh Thampi
sumber