1

Я копирую Xcode.app с одного компьютера на другой, используя scp, и он, кажется, скопировал больше, чем размер файла, и он все еще копирует. Это 4,94 ГБ (я не сжимал его), но неттоп на целевом компьютере говорит, что 7430 МБ уже скопировано, и оно еще не остановилось. Неттоп на исходном компьютере не имеет активности, соответствующей копии.

Команда, которую я использовал

scp -rp paul@192.168.16.178:/Applications/Xcode.app /Applications/

Неттоп на машине назначения:

ssh.636                                                                                         7662 MiB          21 MiB   178 KiB  2029 KiB  1044 B
tcp4 192.168.16.108:50145<->192.168.16.178:22                    en1     Established        7662 MiB          21 MiB   178 KiB  2029 KiB  1044 B    13.53 ms   512 KiB   128 KiB        BE

Любые идеи, почему он скопировал более 7 ГБ, когда файл только 4,94 ГБ? Исходными и целевыми машинами являются iMac и Mac mini, которые копируются по локальной сети Wi-Fi.

Обновление: копирование завершено, и когда я проверяю размер XCode на целевом компьютере, это колоссальные 10,07 ГБ. Я не понимаю, как Xcode должен был удвоиться в размере во время копирования. Моя единственная теория заключается в том, что каталоги .app уже сжаты, а scp их распаковывает.

Ура!

1 ответ1

2

Вот страница, описывающая, как работает протокол SCP. Примечательным фактом является то, что он может только передавать файлы и каталоги; нет поддержки протокола для символических ссылок. Фактически, SCP будет обрабатывать каждую символическую ссылку, как если бы это был настоящий файл или каталог.

Моя копия Xcode.app составляет 4,936,956,797 байт в зависимости от операционной системы, и find говорит мне, что она имеет 7,499 символических ссылок. Мы можем обмануть scp, делая вид, что копируем Xcode.app, чтобы посмотреть, сколько данных он пишет:

$ scp -rf Xcode.app < /dev/zero | wc -c
 8746268376

И мы можем сделать то же самое с tar:

$ tar cf - Xcode.app | wc -c
 5018552320

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .