![]() |
|
Модераторы: powerfox, ZeeLax |
![]()
|
|
| UserNet |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 13.12.2006 Где: Новосибирск Репутация: 1 Всего: 3 |
Как можно создать несколько копий одного файла, кроме как конвеер копирований?
|
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
||||
|
||||
| UserNet |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 226 Регистрация: 13.12.2006 Где: Новосибирск Репутация: 1 Всего: 3 |
Не ссылки именно, копии. Что-то с tee не получается. Я пробовал cat 1.txt >2.txt>3.txt
но получается что файл 2.txt пустой. Это сообщение отредактировал(а) UserNet - 24.10.2008, 13:04 |
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
UserNet,
|
|||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 8 Всего: 12 |
|
|||
|
||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
tee эффективнее: в данном случае test.c будет считан 3 раза. Если же речь идёт о выводе программы, то tee подхватывает её вывод (наверное, почти эквивалентно 1 чтению) и пишет в N файлов. Если речь идёт об очень большом выводе (/var/log/messages), то разница будет значительна. |
|||
|
||||
| inside_pointer |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 8 Всего: 12 |
проверил на 17 метрах одна и та же скорость
у tee нужно вывод прятать иначе с выводом эти 17 метров записываются около 7 секунд цикл гибче, т.к. предоставляет средства для имён новых файлов шире чем tee сможет получить, т.к. tee опирается на шаблоны bash а их не так много tee один раз исходный файл открывает но копирует каждый символ из него столько же раз сколько cp |
||||
|
|||||
| powerfox |
|
||||||||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
Я совсем мельком посмотрел на исходники: не похоже, чтобы исходные символы читались N раз. 1 раз чтение, N раз запись. Лучше использовать time для проверок.
tee чуть быстрее (правда, в основном лишь по системному и пользовательскому времени, реальное колеблется). Разница будет значительной если речь идёт не просто о копировании файла, а именно о выводе (логов, например) долго работающей программы. Автор темы не ответил, что именно ему надо.
А for не на шаблоны bash'a опирается?
Это сообщение отредактировал(а) powerfox - 27.10.2008, 16:52 |
||||||||
|
|||||||||
| inside_pointer |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 8 Всего: 12 |
проверил и на 200M файле скорость одна и та же
система толи кэширует там чо-то толи что, иногда копирует одно и то же разное количество времени, но вот то что на 200 метрах разница незаметна, а у tee надо ещё и вывод подавлять for удобнее для этой задачи
и на шаблоны в качестве списка можно установить свою функцию, которая такой вывод даст, что файлы можно переименовывать тоннами и всё будет правильно и под контролем Это сообщение отредактировал(а) inside_pointer - 28.10.2008, 03:48 |
||||
|
|||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
То же самое и в tee... И то, и то сидит поверх оболочки и может использовать её функционал.
Повторюсь, что если речь идёт о копировании логов на лету (то есть программа долго работает и ругается в лог), то tee закончит выполнение одновременно с программой (а цикл нужно запускать отдельно после выполнения). |
|||
|
||||
| inside_pointer |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 8 Всего: 12 |
в tee так не сделаешь
она наверное считывает символы в буфер, а потом с него читает три раза и записывает три раза, потому скорость такая даже 4, т.к. ещё stdout но вот к первоначальному вопросу как размножить файл for подходит больше чем tee, т.к. он гибче просто, мало того for встроенная конструкция а tee программа, конечно cp тоже программа но она не выводит на stdout (что надо при размножении файлов реже 50%) а ещё она может плодить каталоги, в отличии от tee (а я думаю автору интересно и это), и при желании в for'е можно использовать tee, когда нужно, а ещё можно использовать сторонние программы, которые могут предоставлять больше возможностей чем у стандартной tee (то есть и её возможности и ещё какие-нибудь) тут плюсы очевидны, зачем зависеть от tee |
||||
|
|||||
| powerfox |
|
|||
![]() I wanna fork() ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3990 Регистрация: 1.10.2005 Где: Санкт-Петербург Репутация: 26 Всего: 97 |
Убедил |
|||
|
||||
| inside_pointer |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: 8 Всего: 12 |
нашёл прикольную особенность у tee
видишь если бы можно было вывод подавлять попроще чем >/dev/null делать, я бы чаще её юзал, однако из-за этого она подходит к специфическим задачам типа просмотра логов, и для повседневной работы ... (это встраивать алиас с убиранием вывода на экран), а если писать свою копию tee, так её не будет на любом линуксе даже который тот же самый но установленный с нуля (т.е. её надо где-то хранить и ставить каждый раз) |
|||
|
||||
![]()
|
| Правила форума "Linux/UNIX: Oбщие вопросы" | |
|
|
В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу). В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим. Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |