Zstandard – um compressor rápido de alto nível

Para altas taxas de compressão use .zst

Realize compressões mais rápidas e tão compactas ou mais compactas que o formato .xz

Com o zstd você compacta mais rápido, com mais qualidade e menor uso do processador. Use o seguinte comando para compactar:

zstd arquivo -o arquivo.zst

O padrão é o nível 3 de compressão. Para uma maior compressão use o nível entre 1 a 19:

zstd arquivo -19 -o arquivo.zst

Para realizar uma compressão ainda mais elevada (o máximo é o nível 22) use, a opção ultra, para desbloquear o nível pretendido:

zstd arquivo --ultra -22 -o arquivo.zst

Para comprimir diretórios, usando .tar, com a compressão padrão (nível 3), execute o seguinte comando:

tar --zstd -cf diretório.tar.zst diretório

Para compressão máxima (nível 22) em diretórios, é recomendado usar o empacotamento .tar (sem qualquer compressão, apenas empacotar) e logo após compactar, assim:

tar -cf diretório.tar diretório

Para fazer tudo de uma vez, faça assim:

tar -cf diretório.tar diretório; zstd diretório.tar --ultra -22 -o diretório.tar.zst

Para descomprimir é fácil você pode usar o tar para diretórios empacotados ou, unzstd para arquivos compatados:

tar -xf diretório.tar.zst ou unzstd arquivo.zst

Benchmarks

CompressorRatioCompressãoDescompressão
zstd 1.3.4 -12.877470 MB/s1380 MB/s
zlib 1.2.11 -12.743110 MB/s400 MB/s
brotli 1.0.2 -02.701410 MB/s430 MB/s
quicklz 1.5.0 -12.238550 MB/s710 MB/s
lzo1x 2.09 -12.108650 MB/s830 MB/s
lz4 1.8.12.101750 MB/s3700 MB/s
snappy 1.1.42.091530 MB/s1800 MB/s
lzf 3.6 -12.077400 MB/s860 MB/s

O Zstd pode trocar a velocidade de compactação por taxas de compactação mais fortes. É configurável por pequeno incremento. A velocidade de descompactação é preservada e permanece praticamente a mesma em todas as configurações, uma propriedade compartilhada pela maioria dos algoritmos de compactação LZ, como zlib ou lzma.

Os testes a seguir foram executados em um servidor executando o Linux Debian (Linux versão 4.14.0-3-amd64) com uma CPU Core i7-6700K a 4.0GHz, usando lzbench, um benchmark de memória de código aberto da @inikep compilado com o gcc 7.3.0, no corpo de compressão da Silesia.

Velocidade de Compressão vs FatorVelocidade de Descompressão
Compression Speed vs RatioDecompression Speed

Vários algoritmos podem produzir uma taxa de compressão mais alta, mas em velocidade mais lenta, ficando fora do gráfico. Para uma imagem maior, incluindo modos muito lentos, clique neste link.

O caso da compactação de dados pequenos

Os gráficos anteriores fornecem resultados aplicáveis ​​a cenários típicos de arquivo e fluxo (vários MB). Dados pequenos vêm com diferentes perspectivas.

Quanto menor a quantidade de dados a compactar, mais difícil é compactar. Esse problema é comum a todos os algoritmos de compactação e o motivo é que os algoritmos de compactação aprendem com dados anteriores como compactar dados futuros. Porém, no início de um novo conjunto de dados, não há “passado” a ser construído.

Para resolver essa situação, o Zstd oferece um modo de treinamento, que pode ser usado para ajustar o algoritmo para um tipo de dados selecionado. O treinamento do Zstandard é obtido fornecendo-lhe algumas amostras (um arquivo por amostra). O resultado desse treinamento é armazenado em um arquivo chamado “dicionário”, que deve ser carregado antes da compactação e descompactação. Usando este dicionário, a taxa de compactação alcançável em pequenos dados melhora drasticamente.

O exemplo a seguir usa o conjunto de amostras github-users, criado a partir da API pública do github. Consiste em aproximadamente 10K registros, pesando cerca de 1KB cada.

Taxa de CompressãoVelocidade de CompressãoVelocidade de Descompressão
Compression RatioCompression SpeedDecompression Speed

Esses ganhos de compactação são alcançados ao mesmo tempo em que fornecem velocidades mais rápidas de compactação e descompressão.

O treinamento funciona se houver alguma correlação em uma família de pequenas amostras de dados. Quanto mais específico for um dicionário de dados, mais eficiente ele será (não há dicionário universal). Portanto, a implantação de um dicionário por tipo de dados fornecerá os maiores benefícios. Os ganhos do dicionário são efetivos principalmente nos primeiros KB. Em seguida, o algoritmo de compactação usará gradualmente o conteúdo decodificado anteriormente para compactar melhor o restante do arquivo.

Crie gifs perfeitos com ffmpeg

Você poderá baixar parte de um vídeo do youtube, para criar o gif desejado, conforme esse post.

Primeiro, crie uma paleta de cores para gerar Gifs de alta qualidade, com o seguinte comando:

ffmpeg -i clip-de-video.mkv -filter_complex "[0:v] palettegen" palette.png

Esse comando gera uma paleta (palette) de apenas 256 cores. Justamente, para gerar o GIF de alta qualidade.

Crie o Gif com a paleta gerada:

ffmpeg -ss 00:00:00.00 -t 13 -r 23 -i clip-de-video.mkv -i palette.png -filter_complex "[0:v][1:v] paletteuse" -pix_fmt rgb8 -s 616x182 clip-de-video.gif

Resultado:

Explicação:

ffmpeg:

-ss = define o deslocamento da hora de início.

-t = registro de duração ou transcodifique “duração” segundos de áudio/vídeo.

-r taxa definida, taxa de quadros (valor Hz, fração ou abreviação).

-s size definir tamanho do quadro (WxH ou abreviação).

-c copy = copia os codecs de áudio e vídeo, o que torna um processo muito mais celere, ao invés de transcodificar.

Mais informações use: ffmpeg --help

Crie clips de vídeo. Baixe parte do vídeo do youtube com ffmpeg e youtube-dl, ao invés de baixar tudo.

Execute o seguinte comando, antes altere a URL e o tempo, conforme explicação abaixo.

ffmpeg $(youtube-dl -g 'https://youtu.be/Me3JPWpi7fI' | sed "s/.*/-ss 00:03:11.00 -i &/") -t 13 -c copy clip-de-video.mkv

Explicação:

ffmpeg

-ss = define o deslocamento da hora de início

-t = registro de duração ou transcodifique “duração” segundos de áudio/vídeo

-c copy = copia os codecs de áudio e vídeo, o que torna um processo muito mais celere, ao invés de transcodificar.

youtube-dl

-g = simula, silencioso, mas imprime o URL

XDG DEFAULT

Altere o programa padrão para abrir seus scripts

Se estiver usando o xdg-open para abrir aplicativos, use o xdg-mime para definir o aplicativo padrão para um determinado tipo de mime (normalmente, a instalação do xdg-utils fornece o xdg-mime e os programas relacionados).

Neste exemplo iremos usar o howl (um editor de código escrito em lua).

É chato quando tentamos usar o xdg-open para abrir um script.sh e abrir o firefox. Para reverter isso, use o seguinte comando:

xdg-mime default howl.desktop text/x-shellscript

Para garantir que textos planos, e scripts abram com esse mesmo editor, use esses dois comandos:

xdg-mime default howl.desktop text/plain
xdg-mime default howl.desktop application/x-shellscript

https://t.me/comandos_linux/786

Wget – usando o Linux para copiar um site inteiro, uma parte dele ou apenas tipos de arquivos específicos

Olá! Decidi fazer este tutorial como um super resumo dos vários artigos que li ensinando como fazer download de sites inteiros com o Linux sem ser bloqueado pelos servidores de hospedagem. Ensino também algumas manhas que estão escondidas no manual do wget e não são mencionadas na maioria dos artigos que você irá encontrar em outros lugares.

Existem vários motivos do porque você queira fazer o download de um site inteiro. Para o usuário do Linux o jeito mais fácil e ágil é usar o comando wget, que é uma ferramenta de download de arquivos por linha de comando que já vem instalada em praticamente todas as distribuições.

O primeiro passo é acessar o terminal de comandos com ctrl+alt+t e criar uma pasta para ser a base dos seus downloads (um comando por linha):

mkdir “Download do site foo”

cd “Download do site foo”

AGORA É SÓ USAR O SEGUINTE COMANDO:

wget -r -p -E –execute=robots=off –limit-rate=100k –convert-links –random-wait -U mozilla http://www.foo.etc

EXPLICANDO AS OPÇÕES:

-r: Recursivo, baixa tudo o que estiver linkado dentro do domínio informado. Veja que mesmo se você informar http://www.foo.etc/algumacoisa o wget irá baixar tudo em http://www.foo.etc, incluindo http://www.foo.etc/coisaquenaoquero porque ele segue todos os links dentro do site. Para baixar apenas o que está em /algumacoisa veja abaixo em OPÇÕES ADICIONAIS.

-p: Baixa todos os tipos de arquivo (imagens, css, rss, pdf, etc). Não utilize se for baixar apenas um tipo específico de arquivo (ver abaixo em OPÇÕES ADICIONAIS).

-E: Adquire e grava a extensão correta dos arquivos. Sem essa opção uma grande parte dos arquivos será gravada sem extensão.

–execute=robots=off: Não age como se fosse um robot/tracker/spider, ou seja, evita seguir as instruções do arquivo remoto robots.txt porque geralmente os sites somente aceitam os rastreadores do Google e outros buscadores mais comuns, e também porque este arquivo pode limitar quais pastas e/ou arquivos poderemos baixar.

–limit-rate=100k: Limita o download a 100kb/s ou outra velocidade-limite que você quiser para não atrapalhar sua navegação em outros sites. Você pode usar b para bytes/s, k para kilobytes/s ou m para megabytes/s.

–convert-links: Após o download o wget irá converter todos os links para funcionarem na cópia local ou invés de apontar para o original na web, assim você poderá navegar no site mesmo sem conexão com a internet.

–random-wait: Faz pausas aleatórias entre os acessos aos arquivos para evitar que seu acesso seja bloqueado pelo servidor do site. Servidores não gostam que trackers e robots “chupem” seus sites, então essa opção os engana para achar que é um humano que está acessando.

-U mozilla: Indica para o site que o acesso está sendo feito com o navegador Mozilla, evitando que ele detecte o uso wget. Mais uma garantia para que seu acesso não seja bloqueado pelo servidor do site.

OPÇÕES ADICIONAIS:

-c: Continua um download interrompido. Use junto com a opção –no-clobber.

–no-clobber: Não sobrescrever arquivos já existentes. É útil no caso de você precisar continuar um download interrompido.

-np: Para quando você quiser baixar somente uma área do site, como por exemplo você quer apenas o que está em http://www.foo.etc/algumacoisa. Veja que, se usar com a opção -r, ele copiará também o que estiver em http://www.foo.etc/algumacoisa/maiscoisas. Se quiser restringir para apenas /algumacoisa e nada mais, retire a opção -r.

-A “.ext”: Copia apenas os arquivos com a extensão informada. Por exemplo, se quiser apenas (e todas) as imagens JPG utilize -A “.jpg”.

–timeout=30: Define o tempo máximo para esperar por um arquivo. Isso vai evitar que o wget fique “travado” em um arquivo que não pode ser baixado. Como o timeout (tempo esgotado) padrão do wget é de 900 segundos, definir para 30 segundos mais ou menos é melhor. Se em 30 segundos o arquivo não começar a baixar, ele será ignorado e o wget passará para o próximo.

É isso aí! Para mais opções consulte o manual online do wget ou com o comando man wget.

Crie um site como este com o WordPress.com
Comece agora