我的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 中删除文件)。
我的问题是:
下面的代码是原子的,我将如何检查它是否是原子的,如果不是,我将如何使它成为原子的(对于文件为 1GB 或类似大小的场景):
$f = 'myfile.txt';
$file = Storage::disk('d1')->get($f);
Storage::disk('d2')->put($f, $file);
Storage::disk('d1')->delete($f);
有没有一种简单的方法可以使用Storage
外观将文件从一个磁盘移动到另一个磁盘。目前我需要它从一个本地磁盘工作到另一个,但将来我可能需要将它们从一个 S3 存储桶移动到同一个存储桶,从一个 S3 存储桶移动到另一个存储桶,或者从本地磁盘移动到 S3 存储桶。
谢谢