Postagem em destaque

WSL: Backup e Restauração

Imagem
Às vezes você tem um drive mais rápido (SSD) que o outro (HD). É o meu caso: meu drive C, é um SSD de 256 GB e meu drive D, é um HD de 512 GB. Um é pequeno e rápido; outro é grande e lento.  Meu drive C, por ser pequeno, acabou ficando sem espaço. Então fui pesquisar por grandes arquivos (usei o excelente TreeSize Free para isso) e descobri um tal de ext4.vhdx que tinha 29 GB. Esse arquivo é a imagem do disco do WSL no Windows e é normal ficar grande. O problema é que mesmo você apagando arquivos ele não diminui. E quando você usa o Docker, a situação se agrava rapidamente. Então, descobri uma maneira de compactar esse arquivo/disco. É um comentário da KarolineWss numa issue do WSL. Funciona maravilhosamente bem. Tanto que consegui diminuir praticamente pela metade o arquivo.  Mas para fazer isso, claro, pesquisei como fazer backup (e restauração). Esse artigo é sobre isso. E com um bônus, esse o arquivo fica numa localização meio complicada para humanos, mas fazendo um backup e uma

Lista de serviços do Windows

Esses dias fiz algumas alterações na inicialização de alguns serviços do Windows e depois não lembrava mais quais eu tinha habilitado/desabilitado. Para resolver esse problema, fiz um pequeno programa em Delphi que salva o status de inicialização de todos os serviços. Depois de compilá-lo, basta executar diretamente no Prompt de Comando.

program SaveSvc;

{$APPTYPE CONSOLE}

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Registry;

var
reg : TRegistry;
list: TStringList;
arq: text;
i, n: integer;
nomeArquivo: string;

begin
if paramstr(1) <> '' then
nomeArquivo := paramstr(1)
else
nomeArquivo := 'services.reg';

// cria a lista, vazia, em memória
list := TStringList.Create;

// cria o registro
reg := TRegistry.Create;

// localização da chave
reg.RootKey := HKEY_LOCAL_MACHINE;

// abre a chave dos serviços
reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services') ;

// popula a lista com todos os serviços
reg.GetKeyNames(list) ;
assignFile(arq, nomeArquivo);
rewrite(arq);
writeln(arq, 'Windows Registry Editor Version 5.00');
writeln(arq, '');

// todos os serviços
for i := 0 to list.Count - 1 do begin
try
// tenta abrir cada um dos serviços
if reg.OpenKeyReadOnly('\SYSTEM\CurrentControlSet\Services\' + list[i]) then
// se existe o valor "Start"
if reg.ValueExists('Start') then begin
// lê o valor da chave
n := reg.ReadInteger('Start');
writeln(arq, '[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\' + list[i] + ']');
writeln(arq, '"Start"=dword:0000000' + inttostr(n));
writeln(arq, '');
end;
except
end;
end;

// Descarrega o buffer
Flush(arq);

// Fecha o arquivo
Close(arq);

end.

Comentários

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP