Устройство «ETH0» не существует

Я не вижу этого, задокументированного в руководстве GNU coreutils. Он указан в POSIX :

2. Если исходный_файл относится к типу каталога, необходимо предпринять следующие шаги:

[ snip шаги, которые не применяются в рекурсивном режиме, когда целевой файл является существующим каталогом]

f. Файлы в каталоге исходный_файл должны быть скопированы в каталог целевой_файл […]

cp -rn не помогает, потому что -n только говорит «не перезаписывать», но объединение каталогов ничего не перезаписывает.

Я не вижу никаких вариантов rsync или pax , которые бы вам помогли.

Вы можете получить такое поведение с помощью оболочки вокруг cp . Однако анализ параметров командной строки утомителен. Непроверенный код. Известная проблема: не поддерживает сокращенные длинные параметры.

function cp {
  typeset source target=
  typeset -a args sources
  args=("$@") sources=()
  while [[ $# -ne 0 ]]; do
    case "$1" in
      --target|-t) target=$2; shift args;;
      --target=*) target=${1#*=};;
      -t?*) target=${1#??};;
      --no-preserve|--suffix|-S) shift;;
      --) break;;
      -|[^-]*) if [ -n "$POSIXLY_CORRECT" ]; then break; else sources+=($1); fi;;
    esac
    shift
  done
  sources+=("$@")
  if [[ -z $target && ${#sources[@]} -ne 0 ]]; then
    target=${sources[-1]}
    unset sources[-1]
  fi
  for source in "${sources[@]}"; do
    source=${source%"${source##*[^/]}"}
    if [ -e "$target/${source##*/}" ]; then
      echo >&2 "Refusing to copy $source to $target/${source##*/} because the target already exists"
      return 1
    fi
  done
  command cp "$@"
}

1
26.11.2019, 00:20
2 ответа

В CentOS сетевые интерфейсы называются по-другому. Таким образом, они не называются eth0или eth1, а имеют такие имена, как eno1или enp2s0.(Источник.)

Запустите ip addr, чтобы узнать, как названы эти интерфейсы в вашей системе.

Эти имена определены в /etc/sysconfig/network-scripts/ifcfg-<iface>. Вы можете изменить их имена, если хотите, но я не рекомендую этого делать.

6
27.01.2020, 23:42

RHEL/CentOS 7.x использует согласованные имена сетевых устройств . И его также можно назвать предсказуемыми именами сетевых интерфейсов .

в любом случае, лучший способ вернуть eth обратное имя

  • yum удалить biosdevname
  • редактировать /etc/default/grub
  • добавить net.ifnames=0 в GRUB _CMDLINE _LINUX
  • добавьте biosdevname=0 в GRUB _CMDLINE _LINUX, если у вас установлен biosdevname
  • grub2 -mkconfig -o /boot/efi/EFI/centos/grub.cfg {замените centos на rhel}
  • перезагрузка
  • eth0 и eth1 и т. д. теперь должны быть там вместо используемого синтаксиса именования.

Вам не нужно ничего трогать в /etc/sysconfig/.

0
27.01.2020, 23:42

Теги

Похожие вопросы