Linux скопировать структуру каталогов без файлов

Linux скопировать структуру каталогов без файлов

Для копирования файлов используйте команду cp («copy»). Она принимает два аргумента: исходный файл, который существует и должен быть скопирован, и целевой файл, который определяет имя файла-копии. cp создает идентичную копию файла, присваивая ей указанное имя целевого файла. Если файл с таким именем уже существует, cp перезаписывает его. Она не изменяет исходный файл.

Чтобы скопировать файл `my-copy’ в файл `neighbor-copy’, наберите:

$ cp my-copy neighbor-copy [Enter]

Эта команда создает новый файл с именем `neighbor-copy’, который является идентичным файлу `my-copy’ во всех отношениях, кроме имени файла, имени владельца, группы и времени модификации — новый файл имеет время модификации, указывающее момент его копирования. Файл `my-copy’ не изменяется.

Чтобы сохранить все атрибуты оригинального файла, включая его время модификации, имя владельца, группу и права доступа, используйте ключ `-p’ («preserve»)(сохранить).

Чтобы скопировать файл `my-copy’ в файл `neighbor-copy’, сохранив все атрибуты исходного файла в копии, наберите:

$ cp -p my-copy neighbor-copy [Enter]

Эта команда копирует файл `my-copy’ в новый файл `neighbor-copy’, полностью идентичный исходному по всем аспектам, кроме имени файла.

Чтобы скопировать каталог вместе со всеми подкаталогами и файлами, которые он содержит, используйте опцию -R — она создает рекурсивную копию указанного каталога и его содержимого.

Чтобы скопировать каталог `public_html’ вместе со всеми его файлами и подкаталогами, в новый каталог `private_html’, введите:

$ cp -R public_html private_html [Enter]

Опция `-R’ не копирует файлы, являющиеся символической ссылкой, и не сохраняет оригинальные права доступа к файлам. Чтобы скопировать каталог рекурсивно, включая все ссылки и учитывая все права доступа, используйте опцию `-a’ («archive»). Это полезно для резервного копирования больших по объему деревьев каталогов.

Чтобы сделать резервную копию дерева каталогов `public_html’ в каталог `private_html’, введите:

Источник

Linux скопировать структуру каталогов без файлов

Собственно хочется скопировать на другой диск полную структуру одного каталога, в нем примерно тысяча подкаталогов. Собственно нужна только структура, файлики сами не нужны.
Есть ли какая команда?

Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

Оглавление

  • Как можно скопировать только структуру каталогов?, Simps, 13:31 , 14-Июн-05, (1)
    • Как можно скопировать только структуру каталогов?, Дениска., 13:33 , 14-Июн-05, (2)
  • Как можно скопировать только структуру каталогов?, allez, 07:35 , 15-Июн-05, (3)
    • Как можно скопировать только структуру каталогов?, skv, 14:04 , 16-Июн-05, (4)

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

>
>Собственно хочется скопировать на другой диск полную структуру одного каталога, в нем
>примерно тысяча подкаталогов. Собственно нужна только структура, файлики сами не нужны.
>
>Есть ли какая команда?

какой нить язык + какая нить рекурсивная функция

1. «Как можно скопировать только структуру каталогов?»
Сообщение от Simps (??) on 14-Июн-05, 13:31 (MSK)
Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

2. «Как можно скопировать только структуру каталогов?»
Сообщение от Дениска. on 14-Июн-05, 13:33 (MSK)

find -type d даст тебе список каталогов, а создавать можешь как душе угодно — хоть xargs mkdir с нужым параметром, хоть файло после парсить со списком этих каталогво.

Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

3. «Как можно скопировать только структуру каталогов?»
Сообщение от allez (ok) on 15-Июн-05, 07:35 (MSK)

>
>Собственно хочется скопировать на другой диск полную структуру одного каталога, в нем
>примерно тысяча подкаталогов. Собственно нужна только структура, файлики сами не нужны.
>
>Есть ли какая команда?

find /where/to/search -type d | cpio -pvdm /where/to/copy

Удалить Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх

4. «Как можно скопировать только структуру каталогов?»
Сообщение от skv (??) on 16-Июн-05, 14:04 (MSK)

>>
>>Собственно хочется скопировать на другой диск полную структуру одного каталога, в нем
>>примерно тысяча подкаталогов. Собственно нужна только структура, файлики сами не нужны.
>>
>>Есть ли какая команда?
>
>
>find /where/to/search -type d | cpio -pvdm /where/to/copy

СПАСИБО! все так и сделал, все ОК 🙂

Источник

Как копировать файлы и каталоги в Linux

Копирование файлов и каталогов — одна из наиболее распространенных задач, которые вы будете выполнять при работе в командной строке. В Linux есть несколько команд для копирования файлов, наиболее широко используемые инструменты — cp и rsync .

Обычной практикой является использование команды cp для копирования файлов и rsync для копирования каталогов.

Чтобы иметь возможность копировать файлы и каталоги, у вас должны быть как минимум права на чтение исходного файла и права записи в целевой каталог.

Копирование файлов с помощью команды cp

В операционных системах Linux и Unix команда cp используется для копирования файлов и каталогов.

Самый простой вариант использования — скопировать файл в текущий рабочий каталог. Например, чтобы скопировать файл с именем file.txt в файл с именем file_backup.txt в текущем каталоге , вы должны выполнить следующую команду:

Если целевой файл существует, он будет перезаписан. Чтобы получить запрос на подтверждение перед перезаписью файлов, используйте параметр -i .

По умолчанию при использовании команды cp для копирования файла новый файл будет принадлежать пользователю, выполняющему команду. Используйте параметр -p чтобы сохранить режим файла, владельца и временные метки :

Другой вариант, который может быть полезен, — это -v . При использовании этой опции команда печатает, что делается:

Скопируйте файл в каталог

Чтобы скопировать файл в каталог, укажите абсолютный или относительный путь к каталогу. Если целевой каталог не указан, файл копируется в текущий каталог.

В следующем примере мы file.txt файл file.txt в file.txt /backup :

При указании в качестве места назначения только имени каталога скопированный файл будет иметь то же имя, что и исходный файл.

Если вы хотите скопировать файл под другим именем, вам необходимо указать желаемое имя файла:

Приведенная выше команда скопирует файл в указанный каталог как new_file.txt .

Копировать несколько файлов

Чтобы скопировать сразу несколько файлов и каталогов, укажите имена исходных файлов и каталогов, за которыми следует каталог назначения в качестве последнего аргумента:

При копировании нескольких файлов местом назначения должен быть каталог.

Команда cp также позволяет использовать сопоставление с образцом. Например, чтобы скопировать все файлы .png из текущего каталога в каталог /backup , вы должны использовать:

Копирование каталогов с помощью команды cp

Чтобы скопировать каталог, включая все его файлы и подкаталоги, используйте параметр -R или -r . В следующем примере мы копируем каталог Pictures в Pictures_backup :

Приведенная выше команда создаст каталог назначения и рекурсивно скопирует все файлы и подкаталоги из источника в каталог назначения.

Если целевой каталог уже существует, сам исходный каталог и его содержимое копируются в целевой каталог. Чтобы скопировать только файлы и подкаталоги, но не целевой каталог, используйте параметр -T :

Параметры, используемые при копировании файлов, также могут использоваться при копировании каталогов. Основное отличие состоит в том, что при копировании каталогов необходимо использовать параметр -R .

Копирование файлов и каталогов с помощью команды rsync

rsync — это быстрая и универсальная утилита командной строки, которая синхронизирует файлы и каталоги между двумя местоположениями. Его можно использовать для копирования файлов в локальные и удаленные места.

rsync включает множество параметров, которые контролируют каждый аспект его поведения.

Наиболее полезная опция -a которая рекурсивно копирует каталоги, передает специальные и блочные устройства и сохраняет символические ссылки, время модификации, группу, владение и разрешения.

Чтобы скопировать один файл из одного места в другое, вы должны выполнить следующую команду:

Если целевой файл существует, rsync перезапишет его.

Эту же команду можно использовать для копирования каталога:

rsync по-разному rsync исходным каталогам, заканчивающимся косой чертой / . Если вы добавите завершающую косую черту в исходный каталог, команда скопирует только содержимое исходного каталога в целевой каталог. Если косая черта в конце опущена, rsync скопирует исходный каталог в целевой каталог. Самый безопасный вариант — всегда включать косую черту / как в месте назначения, так и в источнике.

Чтобы узнать больше о rsync прочтите следующие статьи:

Выводы

Мы показали вам, как копировать файлы и каталоги в системах на базе Linux и Unix, используя утилиты cp и rsync .

Если у вас есть вопросы, оставьте комментарий ниже.

Источник

скопировать структуру каталогов с двумя требованиями

  • задать максимальный уровень вложенности
  • сохранить временнЫе отметки

Как сделать сабж без использования грубой силы?

1. man find
/-maxdepth

2. man tar
/—atime-preserve

ломать не строить, так что копируй всё, удалить потом всегда успеется

schizoid : Нечто подобное я и имел ввиду под словами грубая сила. Да и xargs у меня не будет в распоряжении.

Была всё-таки надежда, что я что-нибудь упустил из минимального набора команд.

Это unix-way, без шуток.

Без xargs — тогда find -exec tar -ac, например, и в файл.

Или сохранить список в файл и tar -T $FILE_WITH_LIST

Это гдеж вы будете все это дело прменять, что даже xargs нет и не поставить его? На тостере? Тогда почему бы не сделать это в нормальном окружении, а потом передать тостеру уже готовый результат?

У гнутого tar’а работает —exclude=’*/*/*’, может подойдёт.

если в совсем диком окружении, то проще нативный бинарник сваять, с или с++ в руки.

tar -T —
вместо xargs в первом варианте отлично сработает.

Как сделать сабж без использования грубой силы?

Взмахнуть волшебной палочкой и сказать: «сделай мне заи хорошо!»

А cp -a не отвечает этим требованиям?

Не сомневаюсь. Но иногда использование конвейеров является следствием незнания каких-то возможностей известных команд. Тема была создана отчасти для того, чтобы развеять предположение о том, что я что-то упускаю.

Это где ж вы будете все это дело применять, что даже xargs нет и не поставить его?

В busybox. Можно сделать и в «нормальном окружении», но здесь тот случай, когда этого «нормального окружения» ещё нет.

Взмахнуть волшебной палочкой и сказать: «сделай мне.

Читайте выше. Всегда остаётся сомнение, что такой палочки не существует. Ведь если палочка действительно хороша, то лучше использовать её одну, чем собирать самому из не менее хороших, но многих.

В целом, задача была из не особенно важных. Всем огромное спасибо за проявленный энтузиазм, особенно schizoid и sdio . Есть чему поучиться.

Источник

Читайте также:  Kali linux cisco tools
Оцените статью