Команда cp *


Главная Форумы POWER Systems AIX/Hardware Команда cp *

В этой теме 2 ответа, 3 участника, последнее обновление  byldozer 7 года/лет назад.

  • Автор
    Сообщения
  • #10233

    Aybek
    Участник

    установлен AIX 6.1 на IBM p550 с IBM System Storage DS3400 Dual Controller c IBM 4-Gbps Optical Transiver-ом в сторедже развернут 10 RAID и разделен на 3 группу и 3 файловых систем в каждой группе по 4 диска. Случилось следующее при попытке скопировать файлы случайно был нажать entr не дописав вторую строчку те

    $ dbshut
    dbshut[78]: test: 0403-004 Укажите параметр в команде.
    Failed to auto-stop Oracle Net Listener using /bin/tnslsnr
    Processing Database instance «akbmain»: log file /u01/app/oracle/product/10.2.0/
    $ cp /stor/db1/oradata/*
    ^C$ здесь я оборвал серез ctrl+c

    Те я каждый день делал
    $ cp /stor/db1/oradata/* /backup/

    Но на этот раз получилось
    $cp /stor/db1/oradata/* после чего я прервал ctr+c но в /stor/db1/oradata/ было 2 файла t_usr01.dbf и t_usr02.dbf каждый по 4 с лишним Гигабайта но после $cp /stor/db1/oradata/* после я потерял объем t_usr02.dbf стал 4 Мб. При анализ частности выяснялось что это команда cp /folder/* копирует само себя те t_usr01.dbf скопировал в t_usr02.dbf при это не поменял имя а реальный даные t_usr02.dbf получается затерся. Делали эксперимент сделали
    $echo 1111>/folder/1.txt
    $echo 22222>/folder/2.txt и был проведён
    $cp /folder/* после
    $cat /folder/1.txt дал 1111
    $cat /folder/2.txt тоже дал 1111
    Вопрос это баг или так и должно быть? И есть какая либо возможность вернуть файл ?

  • #10236

    andrewk
    Участник

    так и должно быть. это нормальное, документированное поведение всех UNIX-систем. Все подстановки шаблонов выполняются на уровне интерпретатора командной строки. Когда Вы пишите команду:
    cp *
    и у Вас в каталоге два файла — file1 и file2, любой интерпретатор развернет ее в:
    cp file1 file2
    (при условии, что в каталоге они хранятся именно в таком порядке) и как следствие, file1 будет скопирован в file2. Файл после этого можно вернуть только из бэкапа.
    Можно использовать это в менне разрушительных целях, чем это получилось у Вас. Я, например, регулярно пишу что-то типа:
    mv file{1,2}
    когда мне нужно переименовать file1 в file2 😉

  • #10271

    byldozer
    Участник

    Востановить можно — с бекапа 🙂

Для ответа в этой теме необходимо авторизоваться.