Сделайте использование быстрого сжатия.
lz4
- лучший вариант здесь:
LZ4 - очень быстрый алгоритм сжатия без потерь, обеспечивающий скорость сжатия 400 МБ / с на ядро, масштабируемый с помощью нескольких ядер CPU. Он также оснащен чрезвычайно быстрым декодером со скоростью в несколько ГБ / с на ядро, что обычно достигает пределов скорости ОЗУ в многоядерных системах.
Предпочтительно не искать без надобности.
Если на устройстве, с которого вы копируете, много свободного места, и устройство не было недавно обнулено, но все исходные файловые системы должны быть скопированы, то это, вероятно, того стоит. сначала сделать что-то вроде:
dev / zero tee> empty empty1 empty2; синхронизация; rm empty *
Но это зависит от того, на каком уровне вы должны читать исходный текст. Обычно желательно читать устройство от начала до конца из его файла устройства / dev /
some_disk
, потому что чтение на уровне файловой системы обычно включает поиск взад и вперед и вокруг диск непоследовательно. Итак, ваша команда чтения должна быть примерно такой:
dev / source_device lz4 | ...
Однако, если ваша исходная файловая система не должна передаваться целиком, тогда чтение на уровне файловой системы довольно неизбежно, и поэтому вам следует объединить входное содержимое в поток. pax
обычно является лучшим и самым простым решением в этом случае, но вы также можете рассмотреть mksquashfs
.
pax -r / source / tree [12] | lz4 | ...
mksquashfs / source / tree [12] / dev / fd / 1 -comp lz4 | ...
Не не шифровать с помощью ssh
.
Поэтому лучше использовать netcat
( или, как я предпочитаю, более способный ncat
проекта nmap
) для простой сетевой копии. , как было предложено в другом месте:
### на машине tgt ...
nc -l 9999> out.lz4
### затем на машине src ... {{1 }} ... lz4 | nc tgt.local 9999
Протестировано с помощью приведенной ниже команды, все работает нормально
find /home/myfolder -maxdepth 1 -type d ! -iname test2 -exec rm -rvf {} \;
Если требуется только первый уровень (не более глубины 1 ), как указано в вопросе, вот еще один простой вариант:
ls myfolder/ | grep -v "test2" | xargs rm -r
Детали:
ls myfolder/
список всех папок и файлов в каталоге myfolder/
grep -v "test2"
соответствует всему, кроме "test2" xargs rm -r
направляет вывод предыдущей команды в команду rm -r
.