The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Файлы, копирование, архивация

   Корень / Пользователю / Файлы, копирование, архивация

----* Как получать ответы на вопросы по программированию прямо из командной строки или редактора (доп. ссылка 1)   Автор: igor_chubin  [комментарии]
  В [[https://www.opennet.ru/tips/3018_help_cheat.shtml прошлой заметке]] было показано как, пользуясь сервисом cheat.sh, можно получить краткую справку практически по любой популярной команде UNIX/Linux. Сервис использует для этого популярные репозитории шпаргалок (cheat sheets), такие как tldr, cheat и прочие.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Обходной способ запуска программ, скрытых в блочном устройстве   Автор: 赤熊  [комментарии]
 
Предположим у нас нет программы super_mega_ls, а на компьютере нет доступа на
установку ПО и запись файлов, но программой воспользоваться нужно. Wget не
работает, curl огорожен, Flash-накопители монтировать прав нет.

Допустим, у нас есть неформатированная флешка. На своём компьютере запишем
нужную программу в "raw-режиме", не создавая файловую систему и разделы:

   dd if=/bin/ls of=/dev/sdb

Приходим на целевую машину, на которой нужно запустить программу. Помним про
версию ведра/ядра/libc/статическую сборку.
Вставляем флешку. И далее в зависимости от версии системы творим зло. В Debian
Jessie это будет выглядеть так:

   /lib64/ld-2.13.so /dev/sdb

Далее происходит магия (см. исходники exec). Много думаем...
 
----* Использование zsync для минимизации трафика при синхронизации больших файлов, например, ежедневных сборок Ubuntu (доп. ссылка 1)   [комментарии]
  Для пользователей, желающих минимизировать сетевой трафик и ускорить загрузку ежедневных тестовых снапшотов Ubuntu, предоставлена возможность загрузки только изменившихся с момента прошлой загрузки частей iso-образа. Для загрузки только изменений вместо полной копии следует использовать утилиту [[http://zsync.moria.org.uk/ zsync]].
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Монтирование устройств Android 4 в Ubuntu Linux при помощи go-mtpfs (доп. ссылка 1) (доп. ссылка 2) (доп. ссылка 3)   [комментарии]
  Начиная с третьей ветки в платформе Android изменился метод организации внешнего доступа к накопителю мобильного устройства. Если раньше устройство маскировалось под USB-накопитель, который воспринимался внешними системами как обычный USB Flash, то начиная с выпуска Android 3 для доступа к данным предлагается использовать разработанный компанией Microsoft протокол [[http://ru.wikipedia.org/wiki/Media_Transfer_Protocol MTP]] (Media Transfer Protocol), поддержка которого в большинстве Linux-дистрибутивов недоступна из коробки. Причиной перехода на MTP является желание избавиться от основного недостатка старой реализации - необходимости размонтирования раздела перед его экспортом, из-за чего во время подключения раздела к ПК он становился недоступным для мобильного устройства.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Организация файлового хранилища на базе Git-репозитория при помощи Sparkleshare (доп. ссылка 1)   [комментарии]
  В рамках проекта [[http://www.sparkleshare.org/ Sparkleshare]] развивается свободный движок для организации похожих на Dropbox online-хранилищ, непосредственное хранение данных в которых осуществляется в любом Git-репозитории. Использование Git позволяет задействовать элементы версионного контроля для отслеживания изменений в файлах, давая возможность отследить все изменения и при необходимости вернуться к состоянию определенного файла в прошлом.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Преобразование CHM в PDF (доп. ссылка 1)   Автор: pavlinux  [комментарии]
  Для преобразования формата CHM в PDF существует утилита chm2pdf, написанная на языке Python. Если Python нет, можно пойти в обход:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Использование unison для двусторонней синхронизации файлов   [комментарии]
  Для решения задачи по синхронизации данных между двумя машинами, в ситуации когда изменения могут появиться на каждом из компьютеров, прекрасно подходит утилита unison (http://www.cis.upenn.edu/~bcpierce/unison/). При синхронизации между удаленными машинами в качестве транспорта может использоваться ssh. При обнаружении конфликтов, например, когда на обоих машинах отредактирован один и тот же файл, unison пытается разрешить конфликт автоматически, а если это не удается предоставляет пользователю интерфейс для принятия решения.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Монтирование Flash-накопителей с FAT в XFCE, работающем во FreeBSD (доп. ссылка 1)   Автор: bu7cher  [комментарии]
  Инструкция для тех, кому лень набирать "sudo mount_msdosfs /dev/da0s1 ..." и хочется, чтобы при подключении USB Flash на рабочем столе XFCE для монтирования автоматически появлялась иконка, корректно работающая с русскими именами файлов и не требующая для своей работы повышенных прав доступа.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Перемещение всех пользовательских файлов конфигурации в отдельную директорию (доп. ссылка 1) (доп. ссылка 2)   Автор: Мищенков Михаил  [комментарии]
 
Чтобы принудительно переместить все пользовательские файлы конфигурации из
корня домашней директории в отдельный каталог (допустим ~/.config) можно
воспользоваться библиотекой libetc (http://ordiluc.net/fs/libetc/). libetc
подгружается к приложениям через механизм LD_PRELOAD, подменяя собой некоторые
библиотечные вызовы и самостоятельно обрабатывая ситуацию открытия файлов и
директорий, начинающихся с точки. Базовый путь берется из переменной окружения
$XDG_CONFIG_HOME, определенной для этих целей в стандарте http://standards.freedesktop.org/basedir-spec/

Пример использования, в ~/.bashrc, ~/.zshrc или ~/.xsession добавляем:

   # загружаем библиотеку
   export LD_PRELOAD=libetc.so.0 
   # список игнорирования
   export LIBETC_BLACKLIST=/bin/ls:/bin/mv:/bin/cp:/bin/ln:/usr/bin/find:/bin/rm 
   # Перемещаем файлы конфигурации в директорию /home/luc/config
   export XDG_CONFIG_HOME=/home/luc/config

Если явно не определена переменная окружения XDG_CONFIG_HOME, в качестве
базового пути будет использована директория ~/.config/

Работа libetc проверена в таких программах, как OpenOffice.org, KDE, Gnome,
Firefox, Mutt, vim, Thunderbird, Sylpheed, Gimp.
 
----* Монтирование ftp и ssh в локальную директорию   [комментарии]
  Дл монтирования будем использовать FUSE модули curlftpfs (http://curlftpfs.sourceforge.net/) и sshfs (http://fuse.sourceforge.net/sshfs.html). curlftpfs хорош тем, что поддерживает шифрование (SSLv3/TLSv1), может работать поверх HTTP-прокси и автоматически обрабатывает ситуации разрыва соединения. Sshfs интересен возможностью кэширования содержимого директорий.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Выборка и копирование файлов по дате в Linux   Автор: Sclif13  [комментарии]
 
Столкнулся с такой задачей: из каталога необходимо выбрать и скопировать кучу
файлов за один месяц.
Вооружившись командами cp, ls  и awk я приступил и вот что получилось:

   cp $(ls -l | grep 2009-01 | awk '{print $8}') /home/temp/

ls -l выводит содержимое каталога с датой
grep соответственно выбирает файлы за месяц
awk '{print $8}' выводит имя файла для команды cp

Дальше больше ...
Есть каталог в котором куча подкаталогов и в которых соответственно файлы,
которые надо скопировать.
Тут на помощь приходит утилита du:

   cp $(du -a --time | grep 2009-01 | awk '{print $4}') /home/temp/
 
----* Быстрый обмен файлами в Linux без задействования Samba, ftp и т.п. (доп. ссылка 1) (доп. ссылка 2)   Автор: airat  [комментарии]
 
Для быстрого обмена файлами между рабочими станциями под Linux удобно использовать десктоп 
приложение Giver (http://code.google.com/p/giver/), которое не требует каких-либо настроек и 
автоматически определяет запустившие Giver машины в локальной сети.
Достаточно выбрать файл/директорию и машину пользователя в списке.

В Ubuntu 8.10 программа присутствует в стандартном репозитории пакетов:

   sudo apt-get install giver

Другой вариант настройки быстрой передачи файлов - привязка дополнительных скриптов к Nautilus.
Например скрипт nautilus-share (http://gentoo.ovibes.net/nautilus-share/) позволяет 
динамически открывать доступ к определенным каталогам через samba.
В Ubuntu устанавливается через 

   sudo apt-get install nautilus-share
 
----* Составление списка мертвых символических ссылок (доп. ссылка 1)   Автор: pavlinux  [комментарии]
 
Находим файлы символических ссылок, которые никуда не указывают.

   find / -noleaf -type l -print | perl -nle '-e || print'

Эта команда выведет все мертвые ссылки на стандартные вывод.
Можно перевести вывод в файл, для изучения и исправления. 
Или просто удалить, добавив конвейер: "| xargs rm", то есть так:

   find / -noleaf -type l -print |perl -nle '-e || print' | xargs rm

PS. В BSD системах нужно отбросить опцию -noleaf, которая реализована только в GNU find.
 
----* Добавление информации для восстановления к архивам.   Автор: mahoro  [комментарии]
  Утилита par2 позволяет добавлять к файлам информацию для восстановления по алгоритму Рида-Соломона. Это позволяет восстанавливать исходный файл в случае небольших (или даже серьезных) повреждений. Делается это следующим образом:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Переименований группы файлов с перекодированием имени   [обсудить]
 
Для переименования группы директорий первого уровня вложенности с
перекодированием из cp1251 в koi8-r:

find . -type d -maxdepth 1 -exec sh -c 'np=`echo {}|iconv -t koi8-r -f cp1251`; mv "{}" "$np"' \;

Для переименования иерархии файлов:

find . -type f -exec sh -c 'dn=`dirname "{}"`;bn=`basename "{}"`; np=`echo
$bn|iconv -t koi8-r -f cp1251`; mv "{}" "$dn/$np"' \;
 
----* Быстрая передача файла через псевдо-HTTP   Автор: mahoro  [комментарии]
  Когда есть необходимость передать файл с одной машины на другую, а под рукой нет общедоступных ресурсов, можно сделать так:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Контроль целостности системы штатными средствами   Автор: Avatar  [комментарии]
  Что делать если под рукой нет tripwire или osec, а кривой aide вы пользоваться не хотите. Часть функций , таких как проверка прав доступа и изменение файлов, можно реализовать штатными стедствами.
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Как найти все файлы определенного размера   [обсудить]
 
Найти все файлы размером более 10 Мб.
   find / -size +10240k

Более 500 Кб, но менее 600 Кб
   find . -size +500k -a -size -600k

Файлы менее 128 байт, модифицированные последние 10 мин.
   find . -type f -a -size -128c -a -mmin -10
 
----* Как переименовать имена файлов из одной кодировки в другую (доп. ссылка 1)   [комментарии]
  Если не переименовывать каталоги:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Скрипт для удаленного редактирования файлов   Автор: spanka  [комментарии]
 
#!/bin/sh
tmp_file=`mktemp /tmp/scp_vi.XXXXXXXXXX`
cp /dev/null $tmp_file
scp $1 $tmp_file
vi $tmp_file
scp $tmp_file $1
rm -f $tmp_file

запускать так: rvi login@host:/patch/to/file 
В vim можно писать "vim scp://user@host.ru:/home/user/file"
 
----* Полный бэкап на дополнительный диск при помощи rsync (доп. ссылка 1)   [комментарии]
  Резервный диск монтируем как /backup в read-only режиме. По крону еженощно запускаем скрипт следующего содержания:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Почему на разных машинах скрипт генерирует файлы с разными правами доступа   [обсудить]
 
> На одной машине создается файл с правами -rw-rw-r--, а на другой -rw-r--r--.

man 2 umask
В первом случае используется umask 002, а во втором umask 022.
 
----* Есть ли простой способ в уме высчитать права доступа ? 764 как высчитывается ?   [комментарии]
 
764 является комбинацией из цифр UserGroupOther.
В 90% случаев нужно всего три цифры запомнить 7 - rwx, 6 - rw,   4 - r, (1 - x, 5 - rx и т.д. ). 
Можно писать сразу: chmod u=rw file; chmod g=rx,o=rx file, chmod o-w file и т.д.
 
----* Как отсортировать строки файла по числовому значению во втором столбце с разделителем ":"   [обсудить]
 
sort -t':' -n -k3 filename
 
----* Как вывести сколько раз встречаются 15 самых частовстречающихся IP в логе   [обсудить]
 
Предположим, IP во втором столбце лога.
cat log_file | awk '{print $2}'| sort| uniq -c| sort -r -n| head -n 15
 
----* Как определить сумму столбца цифр в файле.   [обсудить]
 
Суммируем 3-й столбец из лог файла.
cat logfile| awk '{s += $3} END {print s}'
 
----* Как разбить файл на части.   [комментарии]
 
split -b 5m file  - разбить на файлы по 5 Мб, (5k - по 5 Кб, 5 - по 5 байт).
split -l 1000 file  - разбить файл на файлы по 1000 строк.
 
----* Как автоматически удалять все файлы в каталоге, созданные позднее N дней   [комментарии]
 
удаляем старше 1 часа:
        find /var/tmp_log/ -type f -mmin +60 -exec rm -f {} \;
удаляем старше 10 дней:
        find /var/tmp_log/ -type f -mtime +10 -exec rm -f {} \;
 
----* Как удалить символ возврата каретки ^M из файла   [обсудить]
 
col -bx < dosfile > newfile
 
----* Как посмотреть список расшаренных ресурсов на Windows машине   [обсудить]
 
IP машины - 1.2.3.4
smbclient -I 1.2.3.4 -L NAME_SERVER
или: nmblookup -r -A 1.2.3.4
или: smbclient -N -L hostname -I 1.2.3.4
или скрипт: smbfind или findsmb
 
----* Как найти все SUID программы на машине   [обсудить]
 
Все SUID и SGID программы:
find / \( -perm -04000 -o -perm -02000 \) -exec ls -ald {} \;
Только SUID ROOT:
find /sbin \( -perm -04000 -a -user 0 \) -exec ls -ald {} \;
 
----* Как скопировать группу файлов на удаленную машину.   [комментарии]
 
С локальной на удаленную:
tar czvf - список_файлов_и_директорий | ssh remote.test.ru tar xzf - -C /home/user/куда_копировать 
Скопировать группу файлов с удаленной машины на локальную.
ssh remote.test.ru tar czf - -C стартовая_директория какие_файлы_копировать
|tar xzf - -C директория_куда_копировать.
 
----* Скрипт для конвертации архива gz в lzma   Автор: john_erohin  [комментарии]
  Скрипт для преобразования архива .gz в .lzma с сохранением времени изменения/создания файла и прав доступа, а также с минимальным влиянием на производительность. Для переименования группы файлов можно использовать конструкцию вида:
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Контроль прогресса выполнения pipe-операции при помощи PV (доп. ссылка 1) (доп. ссылка 2)   Автор: Mac3k  [комментарии]
  Для наглядного просмотра динамики выполнения пересылок через неименованный канал удобно использовать утилиту pv (Pipe Viewer, http://www.ivarch.com/programs/pv.shtml), которая позволяет примерно оценить время выполнения таких операций как "cat file| filter"
...
[Слишком большой объем текста. Скрыт. Для просмотра см. продолжение
]
 
----* Замена одного слова на другое во всех файлах   [обсудить]
 
perl -i.bak -p -e 's/Vasya/Petya/gi;' *
 

 Версия для печати





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру