Sistem sıfırlamadan veya yeniden yüklemeden önce Windows 10 için (WSL) Linux Subsystem nasıl yedeklenir?


25

Benim sorunum, bazı sorunlar nedeniyle pencereleri sıfırlamak veya yeniden yüklemek zorundayım ama geliştirme için WSL'yi yapılandırmak için çok zaman harcadım ve kaybetmek istemiyorum.

Tüm WSL'yi ayarları ve kurulu modülleri, eklentileri, kullanıcıları vb. İle yedeklemenin ve pencereleri sıfırladıktan veya yeniden yükledikten sonra geri yüklemenin bir yolu var mı? Bu konuyu çok araştırdım ama yararlı bir bilgi bulamadım.

Aksi takdirde yedekleme yapmanın bir yolu yoksa, Windows 10 sıfırlama WSL'yi tamamen silecek mi?


Hayal ediyorum, sadece destek gibi %USERPROFILE%/AppData/Local/lxss. Bunu denedin mi?
Ramhound

Evet, denedim, ancak sadece bir çok hata ile işlevsel.
emipac

Yanıtlar:


15

Yedekleme nasıl yapılır?

Herhangi bir sayıda yol, ancak yaygın bir uygulama, yedeklemek istediğiniz dosyaların arşivini oluşturmak için tar'ı kullanmaktır (ortamınızı yeniden oluşturduğunuzda her şeyi yeniden yüklemek için). Basit bir backup.shkomut dosyası yazmak, düzenli bir programda art arda yedeklemeyi kolaylaştırmalıdır.

Ne yedeklenir?

Yapılandırmanızın çoğu Linux .___ config dosyalarında, genellikle ~ / klasörünüzde saklanır. Ayrıca /etc/ssh/ssh_configve diğer benzer sistem yapılandırma dosyalarını da yedeklemek isteyebilirsiniz , ancak örneğe özgü anahtarlar / veriler / vb. İçeren karmaşık yapılandırma dosyalarına dikkat edin.

Sen olabilir apt paket listesi oluşturmak kullanarak dpkg-query -f '${binary:Package}\n' -Whangi yedekleme de yapabilirsiniz ve bir dosyaya yankı başladı.

Nereye yedekleme yapılır?

Daha sonra bu katran arşivlerini ayrı bir konuma kopyalayabilirsiniz. /mnt/c/backupsOneDrive'a, DropBox'a, harici HDD'ye, başka bir yere FTP'ye vb. Kopyalayabileceğiniz Windows tarafından erişilebilir bir klasöre (örn. ) Kopyalamanızı öneririz.

HTH.


23

Windows 10 v1903 , yerleşik bir WSL dışa aktarma / içe aktarma komutu içerir . Özellikle, daha önce dışa aktarılan wsl --exportbir tarve üreten bir . Daha sonra bu dosyayı bilgisayarlar arasında taşıyabilirsiniz.wsl --importtar

Ayrıca -, başka bir makineye doğrudan aktarmanıza ve benzeri bir uzak kabuk kullanarak içe aktarmanıza olanak tanıyan stdin / stdout'u da belirtebilirsiniz ssh.


wsl --importayrıca tar.gzdosyaları içe aktarabilirsiniz. Bu komutlar dahili olarak %SystemRoot%\System32\lxss\tools\bsdtarELF64 ikili dosyasını başlatır .
Biswapriyo

anekdata, sinirsel eğilimin yardımcılarına: wsl --exportbeklediğinizden daha uzun sürebilir. Makinemde, sadece birkaç megabayt yazdıktan sonra yaklaşık 10 dakika oturdu, daha sonra 3.2 GB'lik bir tar dosyası yazdı.
16'da scruss

Bence bu en iyi çözüm ve cevap olarak kabul edilmelidir.
user1602

2

Tam bir WSL linux dağıtımını yedeklemek ve geri yüklemek için, (1) .tar.gzdosya sisteminizle bir a oluşturmayı ve (2) Internet'te bulunan bazı yükleyici araçlarını kullanarak kopyayı geri yüklemeyi deneyebilirsiniz :

  • LxRunOffline , özel linux dağıtımlarını çoğaltma ve yükleme seçeneklerine sahiptir. Bir .tar.gzdosyadan dağıtım kurabilirsiniz .
  • WSL-DistroLauncher bir rootfs.tar.gz.
  • WSLInstall , WSL için başka bir linux yükleyici.

Yedek oluşturma

Bir sorun raporuna dayanarak tar, WSL'de bulunanı kullanarak bir yedek oluşturabilirsiniz . Kopyadaki bazı klasörleri (örn. / Mnt) yok saymanız gerektiğini unutmayın.

# 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

Yedek dosyayı geçerli bir /mnt/calt klasöre oluşturmanız veya daha sonra taşımanız gerekir . Örnekte, dosyalar /mnt/c/tmp.


LxRunOffline kullanarak geri yükleme

LxRunOffline kullanarak , sonuçlanan tar'ı Windows komut satırını kullanarak WSL'ye yeni bir dağıtım olarak yükleyebilirsiniz.

# 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

Yedeklemeyi çalıştırmak için aynı lxRunOffline'ı kullanabilirsiniz

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

DistroLauncher kullanarak geri yükleme

Microsoft örneğini temel alan linux dağıtımları için birçok başlatıcı vardır . Sanırım Yuk7 sürümünü deneyebilirsiniz .

Bir dağıtım dosyası ve launcher.exe. Yukarıda belirtilen dağıtım dosyasını kullanmak için, yedekleme dosyasını rootfs.tar.gzve başlatıcıyı istediğiniz dağıtım adına yeniden adlandırmalısınız . Daha sonra başlatıcıyı Yönetici olarak çalıştırmalısınız (normal kullanıcı olarak çalıştırırken hata aldım)

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

Başlatıcıyı ilk çalıştırdığınızda, dağıtımı yükler ve çalıştırır. Bir dahaki sefere, linux dağıtımını çalıştırır.


Teşekkür ederim! - Yuk7'nin wsdl başlatıcısı lansmanda başarısız oldu ve lxRunOffline sorununu görmedim. Wsldl sorunumu gideren doğru tar komutunu belgelediğim tek yer buydu.
AndrewD

0

Jaime'nin cevabı mükemmel olsa da /tmp, tarer topu yüklemek için launcher.exe kullanıldığında bir şekilde klasör yeniden oluşturulmuyor (özellikle WSL kurulumunu bir makineden diğerine taşımaktan bahsediyorum).

Yani kişi /tmpgerekli hakları yaratmalı ve atamalı.

Benim için işe yarayan tek yaklaşım:

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

# chown root:root /tmp
# chmod 1777 /tmp
## test it ##
# /etc/init.d/mysqld start
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.