В моем файле конфигурации filesystems.php
определены два диска:
'd1' => [
'driver' => 'local',
'root' => storage_path('app/d1'),
],
'd2' => [
'driver' => 'local',
'root' => storage_path('app/d2'),
],
Эти диски также могут быть корзинами Amazon S3, и может быть комбинация корзины S3 и локального диска.
Допустим, у меня есть файл app/d1/myfile.txt
, который я хочу переместить в app/d2/myfile.txt
.
. Сейчас я делаю
$f = 'myfile.txt';
$file = Storage::disk('d1')->get($f);
Storage::disk('d2')->put($f, $file);
и оставляю исходный файлна d1, как это меня не беспокоит (я периодически удаляю файлы из d1).
Мои вопросы:
Является ли код ниже атомного, как бы я проверилесли это так, а если нет, то как бы сделать его атомарным (для сценариев, когда файлы имеют размер 1 ГБ или что-то похожее):
$f = 'myfile.txt';
$file = Storage::disk('d1')->get($f);
Storage::disk('d2')->put($f, $file);
Storage::disk('d1')->delete($f);
Есть ли простой способперемещать файлы с одного диска на другой, используя фасад Storage
.В данный момент мне нужно, чтобы он работал с одного локального диска на другой, но в будущем мне может понадобиться переместить их из одного сегмента S3 в тот же, из одного сегмента S3 в другой или из локального диска в сегмент S3.
Спасибо