Как поставить в очередь несколько файлов для копирования на Mac?


15

Когда я копирую несколько файлов на Mac, система пытается скопировать их все одновременно. Проблема двоякая.

Прежде всего, когда вы выбираете несколько файлов и копируете их, все они объединяются в один процесс с подходом «все или ничего», не похожим на ACID в базах данных. Часто это нежелательно.

Кроме того, когда вы добавляете другие процессы копирования, система пытается копировать все одновременно.

Например, я решаю скопировать большой файл A, а затем решаю также скопировать большой файл B. Это приводит к двум параллельным операциям копирования, независимо от того, является ли один из «больших файлов» также выбором множества файлов.

Мне это не нравится по нескольким причинам:

  • Когда несколько процессов копирования запускаются одновременно, кажется, что это тормозит другие процессы.
  • Кроме того, когда несколько файлов копируются одновременно, сам процесс копирования кажется намного медленнее.
  • И наконец, если процесс прерывается, ни один из файлов не достигает своего места назначения.
  • При добавлении файла в очередь он также сразу начинает копировать, и процесс еще более замедляется.
  • Это реальная проблема при копировании на другие машины или диски в (локальной) сети.

Результат: файл A, который я хотел сначала передать и использовать, занимает гораздо больше времени, чем требуется, и при копировании с центрального жесткого диска в локальной сети я не могу использовать первый файл до тех пор, пока не будут получены все другие файлы.

Таким образом ... Как поставить в очередь несколько файлов для копирования на Mac? Для пояснения: независимо от того, выбрано ли много файлов или они добавляются один за другим, я хочу, чтобы все они помещались в очередь, которая копирует только один файл за раз, пока очередь не будет завершена.

Ответы на Bash и особенно на Perl также приветствуются!


Я действительно не понимаю вопроса. Отчасти кажется, что вы запускаете сразу несколько независимых операций копирования, а потом опять не ...? Вы пытались скопировать все соответствующие файлы как часть одной и той же операции копирования, например, выбрав их все, а затем перетащив к месту назначения; или выбрав их, Cmd-Cто Cmd-Vв пункте назначения?
Даниэль Бек

@Daniel Я попытался прояснить вопрос - с этой проблемой я тоже столкнулся: речь идет о запуске независимых операций копирования. Решением будет очередь, в которую можно просто поместить файлы для копирования, а задания будут обрабатываться последовательно.
slhck

@slhck Как и, наконец, если процесс прерывается, ни один из файлов не достигает своего места назначения, не применяется к независимым операциям? Что я не могу использовать первый файл, пока все другие файлы также не прибыли. жадный?
Даниэль Бек

1
Это также проблема при выборе большого количества файлов и их копировании. Все файлы представляют собой один процесс, в котором файлы в нем невозможно поставить в очередь. Это ИМХО тоже плохо. Тем не менее, я также хотел бы добавить файлы в очередь.
Кебман

Они на самом деле копируются один за другим. Вы имеете в виду, что порядок, в котором они копируются, по сути случайный?
Даниэль Бек

Ответы:


8

UltraCopier

UltraCopier - это бесплатная кроссплатформенная утилита для копирования, которая в настоящее время находится в разработке, поэтому она еще не настолько аккуратна и отточена. Как только вы установите его, он будет находиться в строке меню.

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

С новой версией вы можете группировать с похожим источником и / или местом назначения, или просто всегда или никогда.

введите описание изображения здесь


Ницца! С помощью! Работает отлично! На самом деле посмотрел XCode, Cocoa и Objective C, собираясь написать свое собственное приложение.
Кебман

4

Вот решение Bash:

cp file1 dest1; cp file2 dest2

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

Вы могли бы также сделать

cp file1 dest1 && cp file2 dest2

В этом примере файл будет скопирован, только если он был успешно скопирован.

Для папки вы можете сделать что-то вроде этого:

for x in folder/*; do echo "Copying $x"; cp "$x" destdir; done

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

1
@Kebman: см. Мое последнее изменение.
Вуфферс

2
Будьте внимательны к файлам с пробелами и символами слияния с forподходом. Я бы, наверное, сделал это по find -print0трубопроводу, xargs -0чтобы быть в безопасности.
Slhck

2

Навигация по Path 6 выглядит легче, чем ультракопир, и, безусловно, создает четкую подсказку, плюс у нее гораздо больше возможностей. Для этого также есть 30-дневная пробная версия.

Но я использую это профессионально, поэтому я говорю, что оно того стоит.

Файловые операции в Path Finder 6 (видео YouTube)


1
Я искал бесплатное решение, но Path Finder, как известно, является хорошим приложением. На самом деле, я думаю, это позор, что Finder настолько прост, что вам нужно стороннее приложение, если вы хотите сделать что-то наполовину продвинутое.
Кебман

2

Альтернативный Finder Path Finder включает функцию очереди копирования начиная с версии 6.

Очередь передачи файлов

Получать доступ к текущим файловым операциям из элемента панели инструментов или из отдельного унифицированного окна.


2

В дополнение к некоторым другим менеджерам копирования в этой теме, вы можете посмотреть на ForkLift: http://www.binarynights.com/forklift/

Плюсы:

  • Включить / выключить очередь,
  • FTP + SFTP + Amazon S3 + WEBDav,
  • Куча удобных инструментов синхронизации, ориентированных на разработчиков.

Минусы:

  • Платный (хотя на момент написания статьи в App Store есть специальный, но ...),
  • В версии App Store отсутствуют функции (о, песочница).

0

Планируйте, что вы хотите переместить

  • Создать псевдонимы папок в источнике
  • Переместить псевдонимы в целевую папку

Сделайте скрипт, который найдет псевдонимы и замените их на источник (перемещение)

Запустите скрипт и идите спать.


Привет и добро пожаловать на superuser.com. Ваш пост читается скорее как обсуждение, чем как ответ. Пожалуйста, не говорите, что это не дискуссионный форум, и попробуйте ответить на заданный вопрос. Спасибо! Может быть, вы могли бы отредактировать свой ответ, чтобы сделать его более актуальным.
слеске

Я не хочу планировать. Я просто хочу поставить файлы в очередь и переместить их один за другим, не задумываясь. Создание псевдонимов является излишним, если вы уже используете скрипт. Кроме того, если бы я знал, как сделать сценарий, я бы уже сделал это. У вас есть пример сценария, который поддерживает очереди файлов ?
Кебман

Поместите исходные и целевые пути в текстовый файл «queue.txt», разделенный разделителем, как труба |. Пример строки / foo / bar / source | / target. Тогда кошка queue.txt | пока читаю л; do src = "$ (echo" $ l "| awk -F" | "'{print $ 1}')"; dst = "$ (echo" $ l "| awk -F" | "'{print $ 2}')"; echo "Копирование из $ src в $ dst"; cp -r "$ src" "$ dst"; сделано. Это очень грубый пример. Я бы не советовал вам играть на скрипты просто так, есть куча подводных камней. В любом случае, если вы когда-нибудь попробуете, начните с чтения: devblog.virtage.com/2013/01/…
Рамкам

0

У меня была та же проблема, и я нашел приложение в магазине приложений под названием «CopyQueue».

https://itunes.apple.com/gb/app/copyqueue/id711074010?mt=12

Кажется, отлично работает. Просто перетащите папку или файлы, которые вы хотите скопировать, в очередь, и она начнет копирование через очередь. Вы можете сделать паузу, изменить порядок очередей в очереди, и одна из моих любимых функций - нажать для подтверждения, чтобы подтвердить успешное копирование.


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.