Linux скопировать структуру каталогов
Собственно хочется скопировать на другой диск полную структуру одного каталога, в нем примерно тысяча подкаталогов. Собственно нужна только структура, файлики сами не нужны.
Есть ли какая команда?
Оглавление |
|
Индекс форумов | Темы | Пред. тема | След. тема |
Сообщения по теме |
1. «Как можно скопировать только структуру каталогов?» | |
Сообщение от Simps | |
Удалить | Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх |
2. «Как можно скопировать только структуру каталогов?» | |
Сообщение от Дениска. | |
| |
Удалить | Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх |
3. «Как можно скопировать только структуру каталогов?» | |
Сообщение от allez | |
find /where/to/search -type d | cpio -pvdm /where/to/copy | |
Удалить | Правка | Высказать мнение | Ответить | Рекомендовать в FAQ | Cообщить модератору | Наверх |
4. «Как можно скопировать только структуру каталогов?» | |
Сообщение от skv | |
СПАСИБО! все так и сделал, все ОК 🙂 Как скопировать дерево каталогов, но не файлы в Linux?Я хочу скопировать около 200 каталогов & подкаталоги из одного места в другое, но я не хочу копировать тысячи файлов в этих каталогах. Я нахожусь в Linux. Примечание. Мне не хватает места для копирования всего, а затем удалите все файлы. 8 ответовТолько что нашел это: Другой подход — найти и mkdir : Просто убедитесь, что TARGET уже существует или использует параметр -p для mkdir. Вы также можете сделать: Аналогично, используя (GNU) tar: Вам действительно не нужен код -print0 в командной строке find или -0 в командной строке rsync, если у вас нет имен файлов, содержащих символы новой строки (что возможно, но маловероятно). Tar (и rsync и cpio) читают имена файлов по очереди; использование терминатора NULL в основном полезно с помощью xargs , который обычно читает пробельные разделенные имена файлов (и поэтому не обрабатывает файлы /каталоги с пробелами в своих имена без -0 ). Скопирует все файлы с жесткими ссылками. Такая же структура, те же разрешения. (обратите внимание: жесткие ссылки, поэтому потеря памяти не пропала.) ls -d * / @source: найти. -type d -print0> dirs.txt @destination: xargs -0 mkdir -p Это приведет к тому, что обе команды будут использовать нули в качестве разделителей вместо пробелов. Обратите внимание, что порядок-типа d и -print0 важен! Копируем файлы и папки в терминале LinuxВ данной статье мы разберемся как копировать в терминале Linux папки и файлы. Эти знания вам могут пригодится, если вдруг у вас не будет графического окружения Linux. Да и знания терминала вам поможет в освоении Linux систем, хотя на данный момент можно обойтись в некоторых дистрибутивах вообще без терминала. Но, терминал, это основа Linux, и без него вам может быть тяжко в решении каких либо ситуаций. На сайте уже имеются некоторые статьи на тему освоения терминала в Linux, так что при желании вы можете их найти и ознакомится с ними. Ну а мы вернемся к теме копирования файлов и папок в терминале Linux. При копировании, да и вообще система Linux чувствительна к регистру, так что вводя команды будьте внимательны. Копирование в терминале LinuxДля копирования используется команда “cp”, у нее так же имеются некоторые опции, о которых вы узнаете чуть позже. Для того что бы скопировать какие то файлы или папки, необходимо ввести команду “cp”, далее, при необходимости указать путь до директории где находится папка или файл который вы ходите скопировать. После чего указываем путь до директории куда хотим скопировать. Так же возможно, вне домашнего каталога вам придется работать от root пользователя при копировании информации. И так, давайте приступим, например, мне необходимо скопировать файл под названием “test” в директорию “Документы”. Для этого ввожу команду “cp” далее название файла и путь куда хочу скопировать данный файл. При это не забываем про регистр, как мы помним, Linux чувствителен к нему: Теперь усложним немного и скопируем файл который находится в директории “/tmp”. Как вы помните, при копировании вне домашнего каталога вам нужны будут права root пользователя. А иначе у вас не чего не получится: Что бы получить права root пользователя на копирования из директории “/tmp”, как вы могли уже догадаться, необходимо перед командой “cp” ввести слово “sudo”: sudo cp /tmp/test-file /Документы Предположим, нам необходимо скопировать данный файл по другим именем, для этого снова вводим команду “cp”, далее путь к файлу и путь куда хотим скопировать данный файл. Но, в конце пути куда хотим скопировать, необходимо ввести новое название того файла, который копируем. Например, я хочу скопировать файл “test-file” из директории “/tmp” и переименовать его в “test-cp”, что бы вам было более наглядно, выделю жирным старое название файла, а затем новое: sudo cp /tmp/ test-file /Документы/ test-cp Рекурсивное копированиеДля копирования папок применяется рекурсивное копирование, –recursive (recursive) — копировать каталоги рекурсивно (то есть все подкаталоги и все файлы в подкаталогах). Для этого используется опция “-r”, например, я хочу скопировать папку “test-cp” в директорию “Документы”. Для этого ввожу команду “cp -r”далее указываем путь при необходимости и название папки которую хочу скопировать, после чего указываем путь куда копировать: cp -r test-cp Документы При необходимости точно так же как и файлы при копировании, название папки можно изменить, например, назовем папку “test-cp” просто “test”: cp -r test-cp Документы/test Опция -i при копированииПри копировании файла в нужную вам директорию, предыдущий файл с таким же именем просто перезапишется. То есть, если вы копируете файл “test-file” из директории “/tmp”, в директорию “Документы”, он заменит в директории уже имеющийся файл “test-file”. Что бы избежать перезаписывания файлов необходимо вести опцию “-i”, тогда при копировании вам будет предложен выбор, перезаписать файл или нет. Вы можете выбрать да или нет, указав это буквами “y- да, перезаписать” или “n- нет, не перезаписывать”: sudo -i /tmp/test-file Документы ЗаключениеЯ уже не раз писал, что не стоит боятся терминала Linux, в нем нет ни чего сложно, а порой, бывает и так, что работа в терминале облегчает пользователю жизнь. Так же, если вы пользователь Debian и у вас по каким то причинам нет sudo, вы можете перейти к статье о настройке Debian и добавить вашего пользователя в группу sudo. Вы всегда можете набрать команду “cp –help” для получения справки по данной команде. А на этом сегодня все. Надеюсь данная статья будет вам полезна. |