Оператор Perl-s спешит на помощь!
Создать исполняемый Perl-скриптoverwrite-smaller
:
#!/bin/perl
use warnings;
use strict;
use File::Copy;
my $file = shift;
(my $compressed = $file) =~ s/original/compressed/;
copy($compressed, $file) if -s $compressed < -s $file;
И запустить его для каждого файла в исходном каталоге:
find /home/user/original -type f -exec overwrite-smaller {} \;
Или, оказавшись в Perl, напишите также и поддерево, идущее туда:
#!/usr/bin/perl
use warnings;
use strict;
use File::Copy;
use File::Find;
find({no_chdir => 1,
wanted => sub {
my $file = $File::Find::name;
-f $file or return;
(my $compressed = $file) =~ s/original/compressed/;
copy($compressed, $file) if -s $compressed < -s $file;
}}, 'original');
Я столкнулся с той же проблемой сразу после установки заголовков ядра. Если вы сделали то же самое, не забудьте перезапустить RasPi, а затем проверьте статус службы
.sudo systemctl status docker.service
Я также предпочел указать хост в /etc/docker/daemon.json
, см. здесь для более подробной информации.
Поэтому мне пришлось удалить опцию -H
в конфигурации юнита systemd
(/lib/systemd/system/docker.service
)
Не знаю, что именно помогло, но после перезагрузки все заработало. Не уверен, что это постоянное исправление, так как этот файл может быть изменен вашим следующим apt upgrade
или apt install docker-ce
.