Как скопировать файл и сохранить структуру каталогов?

На самом деле это единственный раздел про unix на этом форуме

Модераторы: /dev/random, Модераторы разделов

Ответить
Kreept
Сообщения: 107
ОС: Linux
Контактная информация:

Как скопировать файл и сохранить структуру каталогов?

Сообщение Kreept »

Добрый вечер.

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

PATH1=/dir1
PATH2=/dir2

cp $PATH1/dir3/dir4/.../dir10/file1 $PATH2/

Как скопировать file1 в директорию PATH2 и сохранить структуру каталогов. Чтобы получилось $PATH2/dir3/dir4/.../dir10/file1.

Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение BIgAndy »

Kreept писал(а):
11.03.2010 22:01
Уже замаялся, извините может и вопрос банальный, но не могу найти как реализовать.

man cp на пердмет опции -r и -R
или rsync
Спасибо сказали:
Аватара пользователя
/dev/random
Администратор
Сообщения: 5282
ОС: Gentoo

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение /dev/random »

Kreept писал(а):
11.03.2010 22:01
Добрый вечер.

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

PATH1=/dir1
PATH2=/dir2

cp $PATH1/dir3/dir4/.../dir10/file1 $PATH2/

Как скопировать file1 в директорию PATH2 и сохранить структуру каталогов. Чтобы получилось $PATH2/dir3/dir4/.../dir10/file1.

1)

Код: Выделить всё

pathcp() {
  local P1="$1"
  local P2="$2"
  shift 2
  for file; do
    mkdir -p "$P2/$(dirname "$file")" && cp "$P1/$file" "$P2/$file"
  done
}

2)

Код: Выделить всё

pathcp() {
  local P1="$1"
  local P2="$2"
  shift 2
  tar cC "$P1" "$@" | tar xC "$P2"
}


BIgAndy писал(а):
11.03.2010 22:12
man cp на пердмет опции -r и -R
или rsync

Это хорошо использовать, если нужно скопировать _весь_ каталог, а не 1-2 файла.
Спасибо сказали:
watashiwa_daredeska
Бывший модератор
Сообщения: 4038
Статус: Искусственный интеллект (pre-alpha)
ОС: Debian GNU/Linux

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение watashiwa_daredeska »

/dev/random писал(а):
11.03.2010 22:16
tar cC "$P1" "$@" | tar xC "$P2"
Я предпочитаю для этих целей cpio:

Код: Выделить всё

cd "$PATH1"; echo dir3/dir4/.../dir10/file1 | cpio -p --make-directories "$PATH2"
Можно сколько угодно файлов в cpio загнать.
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение smaharbA »

Код: Выделить всё

f=dir3/dir4/.../dir10/file1; install -D $PATH1/$f $PATH2/$f
Я конечно далек от мысли...(с)
Спасибо сказали:
Kreept
Сообщения: 107
ОС: Linux
Контактная информация:

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение Kreept »

/dev/random писал(а):
11.03.2010 22:16
Kreept писал(а):
11.03.2010 22:01
Добрый вечер.

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

PATH1=/dir1
PATH2=/dir2

cp $PATH1/dir3/dir4/.../dir10/file1 $PATH2/

Как скопировать file1 в директорию PATH2 и сохранить структуру каталогов. Чтобы получилось $PATH2/dir3/dir4/.../dir10/file1.

1)

Код: Выделить всё

pathcp() {
  local P1="$1"
  local P2="$2"
  shift 2
  for file; do
    mkdir -p "$P2/$(dirname "$file")" && cp "$P1/$file" "$P2/$file"
  done
}

2)

Код: Выделить всё

pathcp() {
  local P1="$1"
  local P2="$2"
  shift 2
  tar cC "$P1" "$@" | tar xC "$P2"
}


BIgAndy писал(а):
11.03.2010 22:12
man cp на пердмет опции -r и -R
или rsync

Это хорошо использовать, если нужно скопировать _весь_ каталог, а не 1-2 файла.


Спасибо!!!!! То что доктор прописал.

Как раз задача стоит в копирование 1-2 файлов. Выбрал вариант с использованием tar, так как путь к файлу передается в переменой VAR=dir3/dir4/.../dir10/file1



Спасибо сказали:
BIgAndy
Сообщения: 1923

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение BIgAndy »

/dev/random писал(а):
11.03.2010 22:16
Это хорошо использовать, если нужно скопировать _весь_ каталог, а не 1-2 файла.

Как скопировать file1 в директорию PATH2 и сохранить структуру каталогов

или файлы, содержащиеся в "каталогах" не составляют структуру "каталогов"?
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение smaharbA »

БигАнди не отмазывайся
Я конечно далек от мысли...(с)
Спасибо сказали:
Kreept
Сообщения: 107
ОС: Linux
Контактная информация:

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение Kreept »

cpio и install, тоже супер.

Всем спасибо, не ожидал что так быстро получу, столько полезных ответов.
Спасибо сказали:
smaharbA
Сообщения: 229
ОС: Windows Vista

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение smaharbA »

хотя БигАнди и близок был

cp --parents $PATH1/$f $PATH2

но как понимаю с версии 4 гну, в бсд нет такого..
Я конечно далек от мысли...(с)
Спасибо сказали:
Аватара пользователя
eddy
Сообщения: 3321
Статус: Красный глаз тролля
ОС: ArchLinux
Контактная информация:

Re: Как скопировать файл и сохранить структуру каталогов?

Сообщение eddy »

smaharbA писал(а):
11.03.2010 23:04
cp --parents $PATH1/$f $PATH2

Точнее --parent
RTFM
-------
KOI8-R - патриотичная кодировка Изображение
Спасибо сказали:
Ответить