Перенести домашний каталог на другой ноутбук

Файловый сервер (Samba)

Перенос домашнего каталога на новый ноутбук — задача, которую лучше не решать «на живую». Ниже — рабочий порядок, два способа (по сети и через Samba) и список того, что переносить не нужно.

Сначала три решения

Канал. 200 ГБ по Wi-Fi — это часы и обрывы. Кабель Ethernet напрямую между ноутбуками (современные сетевые карты сами разворачивают пару) или через гигабитный коммутатор даёт около 110 МБ/с в идеале, то есть 30–40 минут на 200 ГБ; реально — час-полтора. USB-C/Thunderbolt быстрее.

Чем. Для двух Linux-машин — rsync по SSH: он возобновляемый и повторяемый. Samba нужна, если второй ноутбук на Windows или хочется копировать файловым менеджером.

Сколько. Полезно посмотреть объём домашнего каталога и сколько из него мусора:

$ du -sh /home/user
$ du -sh /home/user/.cache /home/user/.local/share/Trash /home/user/snap 2>/dev/null

Способ 1: rsync по SSH (для Linux → Linux)

Общее описание программы, все ключи и разбор ошибок — на отдельной странице: «rsync: синхронизация файлов». Здесь — только то, что нужно для переноса.

На новом ноутбуке — сервер SSH, на старом — команда переноса.

# на НОВОМ ноутбуке
$ sudo apt install openssh-server
$ ip -4 addr show | grep inet        # узнать адрес

Сначала прогон без записи: покажет, что поедет и сколько это займёт.

# на СТАРОМ ноутбуке
$ rsync -aHAX --numeric-ids --dry-run --stats \
    --exclude='.cache/' --exclude='.local/share/Trash/' --exclude='snap/' \
    --exclude='.mozilla/*/cache2/' --exclude='.config/*/Cache*' \
    /home/user/ user@192.168.1.50:/home/user/

Затем настоящий перенос. Ключи: -a — сохранить права и время, -H — жёсткие ссылки, -A/-X — ACL и расширенные атрибуты, --numeric-ids — не пересчитывать владельцев по именам.

$ rsync -aHAX --numeric-ids --info=progress2 \
    --exclude='.cache/' --exclude='.local/share/Trash/' --exclude='snap/' \
    --exclude='.mozilla/*/cache2/' --exclude='.config/*/Cache*' \
    /home/user/ user@192.168.1.50:/home/user/

Прервалось — просто запустить снова ту же команду: уже перенесённое пропускается. Первый проход можно делать, пока работаешь.

Второй проход — перед тем как отдавать ноутбук: донесёт изменения и удалённые файлы. Только здесь уместен --delete: он удалит на новом то, что удалено на старом (лишнее там появиться не должно).

$ rsync -aHAX --numeric-ids --delete --info=progress2 \
    --exclude='.cache/' --exclude='.local/share/Trash/' --exclude='snap/' \
    /home/user/ user@192.168.1.50:/home/user/

Чего в командах намеренно нет:

  • -z (сжатие) — на гигабитном канале экономия на сети меньше, чем потери на процессор, а фото и видео вообще не сжимаются;
  • --delete в первом проходе — опечатка в пути на этом шаге стирает данные;
  • переноса ~/.ssh вслепую: ключи стоит перенести осознанно и проверить права (chmod 600 ~/.ssh/id_*), а не «как получится».

Прямой кабель: две машины без роутера

Кабель между двумя ноутбуками — рабочий путь и самый предсказуемый по скорости. Но у него есть две особенности: адреса придётся задать руками (DHCP-сервера в такой сети нет) и проверить брандмауэр на принимающей машине.

Какой кабель нужен

Обычный патч-корд. Отдельный «кроссовер» для соединения двух компьютеров не нужен уже больше десяти лет: сетевые карты сами определяют, как разведены пары (Auto-MDIX), и это обязательно для гигабитных карт.

Что стоит проверить до всего остального:

  • есть ли вообще порт Ethernet. В тонких ноутбуках его часто нет — тогда нужны два USB-Ethernet адаптера (или один, если у второй машины порт есть);
  • поднялся ли линк. Индикаторы на разъёме и вывод команды:
$ ip -br link
enp3s0   UP   aa:bb:cc:dd:ee:ff

UP — линк есть. DOWN — кабель не вставлен, адаптер выключен или порт не тот. Wi-Fi напрямую кабелем не соединяется: либо провод, либо обе машины в одной сети через роутер или точку доступа.

Адреса: задать вручную

В сети из двух машин адреса должны быть в одной подсети, а шлюз не нужен вовсе. Договоримся так: 192.168.77.1 — старый ноутбук, 192.168.77.2 — новый.

Через NetworkManager (nmcli) на каждой машине — со своим адресом:

# на СТАРОМ ноутбуке
$ nmcli con add type ethernet ifname enp3s0 con-name direct ip4 192.168.77.1/24
$ nmcli con up direct

# на НОВОМ ноутбуке
$ nmcli con add type ethernet ifname enp3s0 con-name direct ip4 192.168.77.2/24
$ nmcli con up direct

То же самое мышью: Настройки → Сеть → Проводное соединение → IPv4 → «Вручную» — адрес, маска 24, остальное пусто. Адрес выдаётся на время и не мешает обычной работе: когда кабель вынут, используется Wi-Fi.

Проверка связи — с обеих сторон:

$ ping -c 3 192.168.77.2

Что нужно на принимающей машине

# 1. Сервер SSH установлен и запущен
$ systemctl status sshd --no-pager | head -3
$ sudo systemctl enable --now sshd

# 2. Он действительно слушает
$ ss -tlnp | grep ':22'

# 3. Брандмауэр пропускает (имя службы зависит от дистрибутива)
$ sudo firewall-cmd --add-service=ssh --permanent && sudo firewall-cmd --reload

Брандмауэр — тот пункт, из-за которого «кабель подключён, пинг идёт, а SSH не отвечает». Проверить, что установлено, помогает такой набор:

$ command -v firewall-cmd ufw urpmi dnf apt
$ systemctl is-active firewalld ufw

Дальше — тот же перенос по SSH, что и через роутер: разница только в адресе.

Про дистрибутивы семейства ROSA (и его форки)

РОСА и её производные — RPM-дистрибутивы, но детали стоит проверить на месте, а не угадывать:

Что Как проверить
Менеджер пакетов command -v dnf urpmi — в новых выпусках dnf, в старых urpmi
Имя службы SSH `systemctl list-unit-files
Брандмауэр systemctl is-active firewalld или ufw (у ROSA исторически свой инструмент настройки)

Установка нужного на принимающей машине:

$ sudo dnf install openssh-server rsync        # или: sudo urpmi openssh-server rsync

Про пользователей и владельцев файлов

Пользователь на обеих машинах называется одинаково — но UID может различаться. В дистрибутивах семейства Mandriva (откуда родом ROSA) первый пользователь традиционно получает UID 500, в Ubuntu-подобных — 1000. Проверить:

$ id tumanov
uid=500(tumanov) ...

Отсюда правило: копируйте от имени своего пользователя, а не от root. Тогда владельцем файлов на приёмнике станет тот, кто копирует, и числовые UID вообще не важны. Копирование от root с --numeric-ids — это вариант для переноса системных каталогов, где владельцы должны сохраниться точно; для домашнего каталога он не нужен и только запутывает.

Способ 2: Samba (Windows на той стороне или файловый менеджер)

Samba показывает каталог по сети как сетевую папку. Быстрый путь — три шага.

# на СТАРОМ ноутбуке
$ sudo apt install samba
$ sudo smbpasswd -a user            # отдельный пароль Samba для пользователя

Минимальная общая папка — общий доступ к своему домашнему каталогу (файл /etc/samba/smb.conf, секция в конце):

[home]
   path = /home/user
   browseable = yes
   read only = no
   valid users = user
   create mask = 0644
   directory mask = 0755
$ sudo testparm                     # проверить конфиг перед запуском
$ sudo systemctl restart smbd
$ sudo ufw allow samba              # если включён брандмауэр

Проверка со второго ноутбука — до того, как копировать:

$ smbclient -L //192.168.1.50 -U user

Подключение с Linux

$ sudo apt install cifs-utils
$ sudo mkdir -p /mnt/old
$ sudo mount -t cifs //192.168.1.50/home /mnt/old -o username=user,uid=$(id -u),gid=$(id -g)

Дальше — обычное копирование, а лучше тот же rsync по смонтированному каталогу: он покажет прогресс и переживёт обрыв.

$ rsync -aHAX --info=progress2 /mnt/old/ /home/user/

Подключение с Windows

В проводнике: \\192.168.1.50\home, затем имя и пароль Samba. Если Windows не пускает, а Linux пускает — виноваты не файлы, а учётные данные: в Samba своя база паролей (sudo pdbedit -L показывает, кто заведён).

Способ 3: внешний диск

Если диск на 300+ ГБ есть — он часто быстрее сети и не зависит от неё. Копирование с проверкой:

$ rsync -aHAX --info=progress2 --exclude='.cache/' --exclude='snap/' /home/user/ /media/user/backup/home/

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

Что переносить не нужно

Что Почему
~/.cache Кэши: браузеры, редакторы, шрифты. Пересоздаются сами, часто десятки гигабайт
~/.local/share/Trash Корзина. Если файл был не нужен там, не нужен и здесь
snap/ Смонтированные образы snap-пакетов, не данные
~/.mozilla/*/cache2, ~/.config/*/Cache* Кэши браузеров и приложений
~/.local/share/containers Образы контейнеров: переносятся повторной загрузкой

Проверить, что исключения не съели лишнего, помогает тот самый --dry-run --stats: он покажет и объём, и число файлов до и после исключений.

Проверка после переноса

Не «выглядит похоже», а посчитать:

# на старом
$ find /home/user -type f -not -path '*/.cache/*' | wc -l
$ du -sh --exclude=.cache --exclude=snap /home/user

# на новом — то же самое, числа должны совпасть

Затем выборочно открыть: одно фото, один документ, один архив; проверить почту, браузер (профиль перенесён — пароли на месте), GPG/SSH-ключи и их права.

Источники

  • man 1 rsync — ключи -aHAX, --numeric-ids, --info=progress2, --dry-run, --delete.
  • man 8 smbd, man 5 smb.conf — служба и файл настройки Samba; man 8 smbpasswd, man 8 pdbedit — учётные записи Samba; man 1 smbclient — проверка доступа.
  • man 8 mount.cifs, man 5 nsswitch.conf — монтирование общих ресурсов из Linux.
  • man 5 hosts_access — правила hosts allow / hosts deny, см. «Настройка доступа с определённых хостов».

Что ещё не проверено

  • Скорость и время переноса зависят от канала: цифры в статье — порядок величины, а не замер на вашем оборудовании.
  • Проверка на Windows приведена по документации Samba и не проверялась: доступ описывается стандартным клиентом Windows.
Оценка статьи 0

Комментарии

Пока комментариев нет.